# rot13.pl # Mariusz "Craig" Cieśla # 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";