diff options
Diffstat (limited to 'scripts/rot13.pl')
-rw-r--r-- | scripts/rot13.pl | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/scripts/rot13.pl b/scripts/rot13.pl new file mode 100644 index 0000000..2b74fd7 --- /dev/null +++ b/scripts/rot13.pl @@ -0,0 +1,77 @@ +# rot13.pl +# Mariusz "Craig" Cieśla <craig at fish.mac.edu.pl> +# ROT13-encodes and decodes messages on the channel :) + +use strict; + +use vars qw($VERSION %IRSSI); + +$VERSION = "2003121202"; + +%IRSSI = ( + authors => "Mariusz 'Craig' Ciesla", + contact => "craig\@fish.mac.edu.pl", + name => "rot13", + description => "ROT13 encoding and reverse :)", + license => "GPLv2", + changed => "$VERSION", + commands => "rot13 unrot13" +); + +use Irssi 20020324; + +sub text2rot ($) +{ + my ($text) = @_; + + $text =~ y/N-ZA-Mn-za-m/A-Za-z/; + + return $text." "; +} + +sub rot2text ($) +{ + my ($text) = @_; + + $text =~ y/A-Za-z/N-ZA-Mn-za-m/; + + return $text; +} + +sub rot13_decode ($$$) +{ + my ($server, $target, $text) = @_; + + return unless ($text =~ /(^|.*?) /g); + my $witem = $server->window_item_find($target); + + return unless ($witem); + $witem->print("%B[ROT13]>>%n ".rot2text($1), MSGLEVEL_CLIENTCRAP); +} + +sub cmd_rot13 ($$$) +{ + my ($arg, $server, $witem) = @_; + + if ($witem && ($witem->{type} eq 'CHANNEL' || $witem->{type} eq 'QUERY')) + { + $witem->command('MSG '.$witem->{name}.' '.text2rot($arg)); + } else { + print CLIENTCRAP "%B>>%n ".text2rot($arg); + } +} + +sub cmd_unrot13 ($$$) +{ + my ($arg, $server, $witem) = @_; + + print CLIENTCRAP "%B>>%n ".rot2text($arg); +} + +Irssi::command_bind('rot13',\&cmd_rot13); +Irssi::command_bind('unrot13',\&cmd_unrot13); + +Irssi::signal_add('message public',sub {rot13_decode($_[0], $_[4], $_[1]);} ); +Irssi::signal_add('message own_public',sub {rot13_decode($_[0], $_[2], $_[1]);}); + +print "%B>>%n ".$IRSSI{name}." ".$VERSION." loaded"; |