use Irssi; use Encode; use Data::Dumper; our $VERSION = '0.02'; our %IRSSI = ( authors => 'ksk', contact => 'ksk_binzume.net', name => 'conv', description => 'convert to utf-8', license => 'NYSL', url => 'http://www.binzume.net/', changed => '2007-10-05', ); my $local_charset = 'UTF-8'; my $remote_charset = 'ISO-2022-JP'; # testing ################### my $test; ############################# sub send_text { my ( $text, $server, $witem ) = @_; if ($server->{tag} eq "2ch") { if ($server && $witem) { Encode::from_to($text, $local_charset, $remote_charset ); } } Irssi::signal_continue( $text, $server, $witem ); } Irssi::signal_add( 'send text', 'send_text' ); sub send_command { my ($command,$server,$item) = @_; if ($server->{tag} eq "2ch") { Encode::from_to($command, $local_charset, $remote_charset ); } Irssi::signal_continue( $command, $server, $item ); } Irssi::signal_add( 'send command', 'send_command' ); sub print_text { my ( $dest, $text, $stripped ) = @_; $test = $dest; if ($dest->{window}->{active_server}->{tag} eq "2ch") { if ($text!~/Topic for .+:/) { Encode::from_to( $text, $remote_charset, $local_charset ); } } Irssi::signal_continue( $dest, $text, $stripped ); } Irssi::signal_add( 'print text', 'print_text' ); sub message_topic { my ( $server, $chan, $topic, $nick, $addr ) = @_; if ($server->{tag} eq "2ch") { Encode::from_to($topic, $local_charset, $remote_charset ); } Irssi::signal_continue( $server, $chan, $topic, $nick, $addr ); } Irssi::signal_add_first( 'message topic', 'message_topic' ); sub event_topic { my ($server, $data, $nick, $address) = @_; my ($channel, $topic) = split(/ :/, $data, 2); if ($server->{tag} eq "2ch") { Encode::from_to($topic, $remote_charset, $local_charset ); } $data = "$channel :$topic"; Irssi::signal_continue( $server, $data, $nick, $address ); } Irssi::signal_add_first("event topic", "event_topic"); Irssi::signal_add_first("event 332", "event_topic"); Irssi::signal_add_first("event 333", "event_topic"); ############################################################# #TESTING Irssi::command_bind test => sub { Irssi::print 'here\'s $test'; Irssi::print $test; Irssi::print $test->{window}->{servertag}; Irssi::print $test->{window}->{active_server}->{tag}; Irssi::print Dumper($test); };