From 0c041a1e944d471406dac285f60c6286fe39f581 Mon Sep 17 00:00:00 2001 From: Jere Toivonen Date: Tue, 22 Mar 2016 02:06:04 +0200 Subject: Add replace.pl --- scripts/replace.pl | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 scripts/replace.pl (limited to 'scripts/replace.pl') diff --git a/scripts/replace.pl b/scripts/replace.pl new file mode 100644 index 0000000..5051167 --- /dev/null +++ b/scripts/replace.pl @@ -0,0 +1,100 @@ +# replace.pl - replaces a regexp with a string +# +# Commands: +# REPLACE ADD - +# REPLACE DEL +# REPLACE LIST +# REPLACE HELP +# +# Example usage: +# REPLACE ADD \S*dQw4w9WgXcQ\S* - Rick Roll +# <@anon> Hey check out this cool video https://www.youtube.com/watch?v=dQw4w9WgXcQ +# <@anon> Hey check out this cool video Rick Roll +# +# Changelog: +# +# 2016-03-22 (version 1.0) +# Release + +use strict; +use vars qw($VERSION %IRSSI); +use Irssi; + +$VERSION = '1.0'; +%IRSSI = ( + authors => 'Jere Toivonen', + contact => 'jere@flamero.fi', + name => 'replace', + description => 'Replaces words with another words', + license => 'MIT', + url => 'http://flamero.fi', + changed => '21 March 2016', +); + +my %replaces; + +sub help_replace { + my $help_str = + "REPLACE ADD - +REPLACE DEL +REPLACE LIST"; + + Irssi::print($help_str, MSGLEVEL_CLIENTCRAP); +} + +sub add_replace { + my ($data, $server, $witem) = @_; + my ($new_key, $new_replace) = split(/ - /, $data,2); + + $replaces{$new_key} = $new_replace; + + Irssi::print("Added replace: $new_key - $new_replace", MSGLEVEL_CLIENTCRAP); +} + +sub list_replace { + my ($data, $server, $witem) = @_; + + Irssi::print("List of replaces:", MSGLEVEL_CLIENTCRAP); + foreach my $key (keys %replaces) { + Irssi::print("$key - $replaces{$key}", MSGLEVEL_CLIENTCRAP); + } +} + +sub del_replace { + my ($data, $server, $witem) = @_; + + foreach my $key (keys %replaces) { + if($data eq $key) { + Irssi::print("Deleted replace $key - $replaces{$key}", MSGLEVEL_CLIENTCRAP); + delete $replaces{$key}; + } else { + Irssi::print("No such replace, see /REPLACE LIST", MSGLEVEL_CLIENTCRAP); + } + } +} + +sub run_replace { + my ($server, $data, $nick, $address) = @_; + my ($target, $msg) = split(/ :/, $data,2); + + foreach my $key (keys %replaces) { + if ($msg =~ /$key/) { + $msg =~ s/$key/$replaces{$key}/; + + Irssi::signal_emit('event privmsg', ($server, "$target :$msg", $nick, $address)); + Irssi::signal_stop(); + } + } +} + +Irssi::signal_add('event privmsg', 'run_replace'); + +Irssi::command_bind('replace help',\&help_replace); +Irssi::command_bind('replace add',\&add_replace); +Irssi::command_bind('replace delete',\&del_replace); +Irssi::command_bind('replace list',\&list_replace); +Irssi::command_bind 'replace' => sub { + my ($data, $server, $witem) = @_; + $data =~ s/\s+$//g; + Irssi::command_runsub('replace', $data, $server, $witem); +} -- cgit v1.2.3 From 41073f77be2232c8e869ba7b7a93b553267c3815 Mon Sep 17 00:00:00 2001 From: Jere Toivonen Date: Tue, 22 Mar 2016 03:23:12 +0200 Subject: Reformatted prints --- scripts/replace.pl | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'scripts/replace.pl') diff --git a/scripts/replace.pl b/scripts/replace.pl index 5051167..7445eab 100644 --- a/scripts/replace.pl +++ b/scripts/replace.pl @@ -1,14 +1,15 @@ # replace.pl - replaces a regexp with a string # # Commands: -# REPLACE ADD - -# REPLACE DEL +# REPLACE ADD - +# REPLACE DEL # REPLACE LIST # REPLACE HELP # # Example usage: # REPLACE ADD \S*dQw4w9WgXcQ\S* - Rick Roll # <@anon> Hey check out this cool video https://www.youtube.com/watch?v=dQw4w9WgXcQ +# shows as: # <@anon> Hey check out this cool video Rick Roll # # Changelog: @@ -25,18 +26,18 @@ $VERSION = '1.0'; authors => 'Jere Toivonen', contact => 'jere@flamero.fi', name => 'replace', - description => 'Replaces words with another words', + description => 'Replaces regexps with predefined strings', license => 'MIT', url => 'http://flamero.fi', - changed => '21 March 2016', + changed => '22 March 2016', ); my %replaces; sub help_replace { my $help_str = - "REPLACE ADD - -REPLACE DEL + "REPLACE ADD - +REPLACE DEL REPLACE LIST"; Irssi::print($help_str, MSGLEVEL_CLIENTCRAP); @@ -48,7 +49,7 @@ sub add_replace { $replaces{$new_key} = $new_replace; - Irssi::print("Added replace: $new_key - $new_replace", MSGLEVEL_CLIENTCRAP); + Irssi::print("Added replace: $new_key - $new_replace", MSGLEVEL_CLIENTCRAP); } sub list_replace { @@ -56,15 +57,20 @@ sub list_replace { Irssi::print("List of replaces:", MSGLEVEL_CLIENTCRAP); foreach my $key (keys %replaces) { - Irssi::print("$key - $replaces{$key}", MSGLEVEL_CLIENTCRAP); + Irssi::print("$key - $replaces{$key}", MSGLEVEL_CLIENTCRAP); } } sub del_replace { my ($data, $server, $witem) = @_; + if (!%replaces) { + Irssi::print("No replaces to delete", MSGLEVEL_CLIENTCRAP); + return; + } + foreach my $key (keys %replaces) { - if($data eq $key) { + if ($data eq $key) { Irssi::print("Deleted replace $key - $replaces{$key}", MSGLEVEL_CLIENTCRAP); delete $replaces{$key}; } else { @@ -94,7 +100,7 @@ Irssi::command_bind('replace add',\&add_replace); Irssi::command_bind('replace delete',\&del_replace); Irssi::command_bind('replace list',\&list_replace); Irssi::command_bind 'replace' => sub { - my ($data, $server, $witem) = @_; - $data =~ s/\s+$//g; - Irssi::command_runsub('replace', $data, $server, $witem); + my ($data, $server, $witem) = @_; + $data =~ s/\s+$//g; + Irssi::command_runsub('replace', $data, $server, $witem); } -- cgit v1.2.3