1# nopl.pl 2# 3# Removes polish national diacritic characters from received msgs on irc, 4# replacing them with their corresponding letters. Can be used against 5# ISO-8859-2 and Windows-1250 character sets. 6# 7# Settings: 8# 9# nopl_replace: How to notify you that letters have been changed. Default 10# is "<pl>text</pl>", where "text" is replaced with the 11# message. 12# 13# Thanks to James <james@jamesoff.net> for his nocaps.pl script on which 14# I have based my nopl (I don't know perl :)). 15 16use strict; 17use vars qw($VERSION %IRSSI); 18 19use Irssi; 20 21$VERSION = '1.00'; 22%IRSSI = ( 23 authors => 'Adam Wysocki', 24 contact => 'gophi <at> efnet.pl', 25 name => 'nopl', 26 description => 'Replaces polish national characters with their corresponding letters', 27 license => 'Public Domain', 28 url => 'http://www.gophi.rotfl.pl/', 29 changed => '10 May 2005 16.12.32', 30); 31 32 33sub have_polish_chars { 34 my ($msg) = @_; 35 36 # only pl-letters 37 $msg =~ s/[^\xF3\xEA\xB6\xB1\xBF\xB3\xE6\xBC\xCA\xF1\xA1\xD3\xA3\xA6\xAC\xAF\xD1\xC6\x9C\xB9\x9F\xA5\x8C\x8F]+//g; 38 39 # if it has pl-letters, return 1 else return 0 40 return 1 if length($msg); 41 42 return 0; 43} 44 45# main event handler 46sub pl_message { 47 my ($server, $data, $nick, $address) = @_; 48 my ($target, $msg) = split(/ :/, $data, 2); 49 50 return if (!have_polish_chars($msg)); 51 52 # bleh, a line contains pl-chars 53 $msg =~ tr/\xF3\xEA\xB6\xB1\xBF\xB3\xE6\xBC\xCA\xF1\xA1\xD3\xA3\xA6\xAC\xAF\xD1\xC6\x9C\xB9\x9F\xA5\x8C\x8F/oesazlczEnAOLSZZNCsazASZ/; 54 55 my $replacement = Irssi::settings_get_str('pl_replace'); 56 $replacement =~ s/text/$msg/; 57 58 # display it 59 Irssi::signal_emit('event privmsg', ($server, "$target :$replacement", $nick, $address)); 60 61 # and stop 62 Irssi::signal_stop(); 63} 64 65Irssi::signal_add('event privmsg', 'pl_message'); 66Irssi::settings_add_str('misc', 'pl_replace', "<pl>text</pl>"); 67