]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
[oops] add settings
authorbw1 <redacted>
Tue, 15 Jan 2019 14:07:59 +0000 (15:07 +0100)
committerbw1 <redacted>
Mon, 25 Feb 2019 13:55:24 +0000 (14:55 +0100)
scripts/oops.pl

index d84b35bf54ae525ddde0f2fcc8fde675663e3b40..cadaad6c99752578a62ac91838795b012a709804 100644 (file)
@@ -4,31 +4,87 @@ use vars qw($VERSION %IRSSI);
 use Irssi;\r
 $VERSION = '20180707';\r
 %IRSSI = (\r
-    authors     => '',\r
-    contact     => '',\r
+    authors     => 'bw1 and others',\r
+    contact     => 'bw1@aol.at',\r
     name        => 'oops',\r
     description =>\r
     'turns \'ll\' and \'ls\' in the beginning of a sent line into the names or whois commands',\r
     license => 'Public Domain',\r
     );\r
 \r
-sub send_text {\r
-    my $pattern = qr/(^(ll|ls)\s*$)/;\r
+my @words;\r
+my $wordonly;\r
+my $warn_msg;\r
+my $help = <<eof;\r
+%9Settings:%9\r
+  $IRSSI{name}_words\r
+    a list of words separated by a whitespace\r
+  $IRSSI{name}_wordonly\r
+    match if the word stand alone \r
+  $IRSSI{name}_warn_msg\r
+    output only a warning message\r
+eof\r
 \r
+sub send_text {\r
     #"send text", char *line, SERVER_REC, WI_ITEM_REC\r
     my ( $data, $server, $witem ) = @_;\r
-    if($data =~ $pattern) {\r
-        if($witem->{type} eq "CHANNEL")\r
-        {\r
-            $witem->command("names $witem->{name}");\r
-            Irssi::signal_stop();\r
+\r
+    my $find='';\r
+    if ($wordonly) {\r
+        foreach (@words) {\r
+            if ( $data =~ m/^$_$/ ) {\r
+                $find=$_;\r
+            }\r
         }\r
-        elsif($witem->{type} eq "QUERY")\r
-        {\r
-            $witem->command("whois $witem->{name}");\r
+    } else {\r
+        foreach (@words) {\r
+            if ( $data =~ m/^$_(\s|$)/ ) {\r
+                $find=$_;\r
+            }\r
+        }\r
+    }\r
+\r
+    if($find && defined $witem) {\r
+        if ($warn_msg) {\r
+            $witem->print("%r$IRSSI{name}:%n warning before word '$find'",MSGLEVEL_CRAP);\r
             Irssi::signal_stop();\r
+        } else {\r
+            if($witem->{type} eq "CHANNEL")\r
+            {\r
+                $witem->command("names $witem->{name}");\r
+                Irssi::signal_stop();\r
+            }\r
+            elsif($witem->{type} eq "QUERY")\r
+            {\r
+                $witem->command("whois $witem->{name}");\r
+                Irssi::signal_stop();\r
+            }\r
         }\r
     }\r
 }\r
 \r
-Irssi::signal_add 'send text' => 'send_text'\r
+sub cmd_help {\r
+    if ($_[0] eq $IRSSI{name} ) {\r
+        Irssi::print($help, MSGLEVEL_CLIENTCRAP);\r
+        Irssi::signal_stop;\r
+    }\r
+}\r
+\r
+sub reload_settings {\r
+    @words= split /\s+/,Irssi::settings_get_str($IRSSI{name}."_words");\r
+    $wordonly=Irssi::settings_get_bool($IRSSI{name}."_wordonly");\r
+    $warn_msg=Irssi::settings_get_bool($IRSSI{name}."_warn_msg");\r
+}\r
+\r
+Irssi::settings_add_str($IRSSI{name},$IRSSI{name}."_words", "ls");\r
+Irssi::settings_add_bool($IRSSI{name},$IRSSI{name}."_wordonly", "off");\r
+Irssi::settings_add_bool($IRSSI{name},$IRSSI{name}."_warn_msg", "off");\r
+\r
+Irssi::signal_add('setup changed', \&reload_settings);\r
+Irssi::signal_add 'send text' => 'send_text';\r
+\r
+Irssi::command_bind('help', \&cmd_help );\r
+\r
+reload_settings();\r
+\r
+# vim:set sw=4 expandtab:\r
git clone https://git.99rst.org/PROJECT