1#to run it if it is here (but in this case it will run automagically when 2#irssi will start): 3# 4#/script load ~/.irssi/scripts/autorun/accent.pl 5# 6#you can simply remove the script: 7# 8#/script unload accent 9# 10#and it will strips your incoming and outgoing hungarian accents 11#but you can: 12# 13#/set accent_strip_in <on|off> -- strips the incoming accents (on) or not (off) 14#/set accent_strip_out <on|off> -- strips the outgoing accents (on) or not (off) 15# 16#/set accent_tag_in <string, default: [A]> indicates the incoming msg filtered 17#/set accent_tag_out <string, default: [A]> indicates the outgoing msg filtered 18# 19#/set accent_latin <string, default: iso 8859-2: A',a',E',e',I',i',O',o',O:,o:,O",o",U',u',U:,u:,U",u"> which to strip 20#/set accent_ascii <string, default: AaEeIiOoOoOoUuUuUu> will be the stripped 21# 22#be careful, accent_latin and accent_latin must be charlist and must have 23#the same length to be matched as a pair. 24# 25#/set accent_debug <on|off> -- if you have a problem try to turn this on 26 27use strict; 28use vars qw($VERSION %IRSSI); 29 30use Irssi; 31($VERSION) = '$Id: accent.pl,v 1.34 2003/03/27 15:54:25 toma Exp $' =~ / (\d+\.\d+) /; 32%IRSSI = ( 33 authors => 'Tamas SZERB', 34 contact => 'toma@rulez.org', 35 name => 'accent', 36 description => 'This script strips the hungarian accents.', 37 license => 'GPL', 38); 39 40my $stripped_out = 0; 41my $stripped_in = 0; 42 43sub accent_out { 44 if(Irssi::settings_get_bool('accent_strip_out') && !$stripped_out) { 45 my $accent_tag = Irssi::settings_get_str('accent_tag_out'); 46 47 my $debug=Irssi::settings_get_bool('accent_debug'); 48 49 my $accent_latin = Irssi::settings_get_str('accent_latin'); 50 my $accent_ascii = Irssi::settings_get_str('accent_ascii'); 51 if (length($accent_latin) != length($accent_ascii)) { 52 if ($debug) { 53 Irssi::print("`$accent_latin' and `$accent_ascii' hasn't same length"); 54 } 55 } 56 else { 57 my $emitted_signal = Irssi::signal_get_emitted(); 58 my ($msg, $dummy1, $dummy2) = @_; 59 60 if ($debug) { 61 Irssi::print("signal emitted: $emitted_signal"); 62 } 63 64 if ( $msg =~ /[$accent_latin]/ ) { 65 if ($debug) { 66 Irssi::print("outgoing contains accent: $msg"); 67 } 68 eval "\$msg =~ tr/$accent_latin/$accent_ascii/;"; 69 $msg = $msg . ' ' . $accent_tag; 70 $stripped_out=1; 71 72 Irssi::signal_emit("$emitted_signal", $msg, $dummy1, $dummy2 ); 73 Irssi::signal_stop(); 74 $stripped_out=0; 75 } 76 } 77 } 78} 79 80sub accent_in { 81 if(Irssi::settings_get_bool('accent_strip_in') && !$stripped_in) { 82 my $accent_tag = Irssi::settings_get_str('accent_tag_in'); 83 84 my $debug=Irssi::settings_get_bool('accent_debug'); 85 86 my $accent_latin = Irssi::settings_get_str('accent_latin'); 87 my $accent_ascii = Irssi::settings_get_str('accent_ascii'); 88 if (length($accent_latin) != length($accent_ascii)) { 89 if ($debug) { 90 Irssi::print("`$accent_latin' and `$accent_ascii' hasn't same length"); 91 } 92 } 93 else { 94 my $emitted_signal = Irssi::signal_get_emitted(); 95 96 my ($dummy0, $text, $dummy3, $dummy4, $dummy5) = @_; 97 if ($debug) { 98 Irssi::print("signal emitted: $emitted_signal"); 99 } 100 if ( $text =~ /[$accent_latin]/ ) { 101 if ($debug) { 102 Irssi::print("incoming contains accent: $text"); 103 } 104 if ($debug) { 105 Irssi::print("text=$text"); 106 } 107 #no idea why w/o eval doesn't work: 108 eval "\$text =~ tr/$accent_latin/$accent_ascii/;"; 109 $text = $text . ' ' . $accent_tag; 110 $stripped_in=1; 111 112 if ($debug) { 113 Irssi::print("text=$text"); 114 } 115 Irssi::signal_emit("$emitted_signal", $dummy0, $text, $dummy3, $dummy4, $dummy5 ); 116 Irssi::signal_stop(); 117 $stripped_in=0; 118 } 119 } 120 } 121} 122 123#main(): 124 125#default settings /set accent_in && accent_out ON: 126Irssi::settings_add_bool('lookandfeel', 'accent_strip_in', 1); 127Irssi::settings_add_bool('lookandfeel', 'accent_strip_out', 1); 128 129#define the default tags for the filtered text: 130Irssi::settings_add_str('lookandfeel', 'accent_tag_in', '[Ai]'); 131Irssi::settings_add_str('lookandfeel', 'accent_tag_out', '[Ao]'); 132 133#define which chars will be changed: 134#iso 8859-2: A',a',E',e',I',i',O',o',O:,o:,O",o",U',u',U:,u:,U",u" 135Irssi::settings_add_str('lookandfeel', 'accent_latin', "\301\341\311\351\315\355\323\363\326\366\325\365\332\372\334\374\333\373"); 136Irssi::settings_add_str('lookandfeel', 'accent_ascii', "AaEeIiOoOoOoUuUuUu"); 137 138#define wheather debug or not (default OFF): 139Irssi::settings_add_bool('lookandfeel', 'accent_debug', 0); 140 141#filters: 142#incoming filters: 143Irssi::signal_add_first('server event', 'accent_in'); 144 145#output filters: 146Irssi::signal_add_first('send command', 'accent_out'); 147#Irssi::signal_add_first('message own_public', 'accent_out'); 148#Irssi::signal_add_first('message own_private', 'accent_out'); 149 150#startup info: 151Irssi::print("Hungarian accent stripper by toma * http://scripts.irssi.org/scripts/accent.pl"); 152Irssi::print("Version: $VERSION"); 153 154