All pastes #957672 Raw Edit

conv.pl modified

public text v1 · immutable
#957672 ·published 2008-03-26 03:14 UTC
rendered paste body
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);

};