packages: irssi-scripts/gtrans.pl, irssi-scripts/irssi-scripts.spec - add n...

glen glen at pld-linux.org
Fri Oct 30 14:26:12 CET 2009


Author: glen                         Date: Fri Oct 30 13:26:12 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- add nick blacklist via gtrans_blacklist glob-like pattern
- make gtrans_whitelist work also glob-like not only "*"
- fix some perl warnings of variable redefinition

---- Files affected:
packages/irssi-scripts:
   gtrans.pl (1.1 -> 1.2) , irssi-scripts.spec (1.49 -> 1.50) 

---- Diffs:

================================================================
Index: packages/irssi-scripts/gtrans.pl
diff -u packages/irssi-scripts/gtrans.pl:1.1 packages/irssi-scripts/gtrans.pl:1.2
--- packages/irssi-scripts/gtrans.pl:1.1	Fri Oct 30 14:23:34 2009
+++ packages/irssi-scripts/gtrans.pl	Fri Oct 30 14:26:07 2009
@@ -1,4 +1,4 @@
-#!/usr/bin/env perl -w
+#!/usr/bin/perl -w
 # vim: set sw=2 ts=2 sta et:
 
 # GTrans: Automatic translation in Irssi using the Google Language API
@@ -53,6 +53,7 @@
 #     /set gtrans_output_auto 2
 #     /set gtrans_output_auto_lang fi
 #     /set gtrans_whitelist #mychan james
+#     /set gtrans_blacklist CIA-* abw stbr
 #
 #   Incoming or outgoing messages on the #mychan channel and queries
 #   from/to james will now be automatically translated: Incoming
@@ -107,6 +108,10 @@
 #          translated. This applies to both incoming and outgoing
 #          messages. Specify "*" to whitelist everything.
 #
+#   gtrans_blacklist ("")
+#     xx:  Space-separated list of channels and nicks that are ignored if they get enabled by gtrans_whitelist
+#          This applies to both incoming and outgoing messages. You may use "*" to match by pattern.
+#
 # Links / more info:
 #   List of supported languages in the Google Language API:
 #     <URL:http://code.google.com/apis/ajaxlanguage/documentation/reference.html#LangNameArray>
@@ -228,6 +233,35 @@
   return $result;
 }
 
+# return true if $target is in $list.
+# allows '*' to match a glob-like pattern
+sub is_listed {
+  my ($list, $target) = @_;
+
+  for my $q (@$list) {
+    my $p = quotemeta($q);
+    $p =~ s/\\\*/.*/g;
+    if ($target eq $q or $target =~ /^$p$/) {
+      return 1;
+    }
+  }
+  return 0;
+}
+
+sub is_blacklisted {
+  my ($target) = @_;
+  my @blacklist = split(/ /, Irssi::settings_get_str("gtrans_blacklist"));
+
+  return is_listed(\@blacklist, $target);
+}
+
+sub is_whitelisted {
+  my ($target) = @_;
+  my @whitelist = split(/ /, Irssi::settings_get_str("gtrans_whitelist"));
+
+  return is_listed(\@whitelist, $target);
+}
+
 sub event_input_msg {
   my $subname = "event_input_msg";
   my ($server, $msg, $nick, $address, $target) = @_;
@@ -247,26 +281,18 @@
 
     # Check whether the source $nick is in the whitelist.
     dbg(3, "$subname() Looking for nick \"$nick\" in whitelist");
-    foreach (split(/ /,
-        Irssi::settings_get_str("gtrans_whitelist"))) {
-      $do_translation = 1 if ($nick eq $_ or $_ eq "*");
-    }
+    $do_translation = 1 if is_whitelisted($nick) && !is_blacklisted($nick);
   } else { # $sig eq "message public"
     # Public message.
     $witem = Irssi::window_item_find($target);
 
-    # Check whether $target is in the whitelist.
-    dbg(3, "$subname() Looking for channel \"$target\" " .
-           "in whitelist");
-    foreach (split(/ /,
-        Irssi::settings_get_str("gtrans_whitelist"))) {
-      $do_translation = 1 if ($target eq $_ or $_ eq "*");
-    }
+    dbg(3, "$subname() Looking for channel \"$target\" in whitelist");
+    # Check whether $target is in the whitelist
+    $do_translation = 1 if is_whitelisted($target) && !is_blacklisted($nick);
   }
 
   unless ($do_translation) {
-    dbg(1, sprintf "Channel (\"$target\") or nick (\"$nick\") is " .
-                   "not whitelisted");
+    dbg(1, sprintf "Channel (\"$target\") or nick (\"$nick\") is not whitelisted");
     return;
   }
 
@@ -312,7 +338,7 @@
   my $reliable = $result->is_reliable;
 
   # Prepare arguments for translation.
-  my %args = (
+  %args = (
     "func" => sub { $service->translate(@_) },
     "text" => $msg,
     "dest" => (split(/ /,
@@ -320,7 +346,7 @@
   );
 
   # Run translation.
-  my $result = wgl_process(%args);
+  $result = wgl_process(%args);
 
   dbg(4, "$subname() wgl_process() translate returned: " .
          Dumper(\$result));
@@ -397,14 +423,7 @@
     dbg(3, "$subname() Looking for target \"" .
            $witem->{name} . "\" in whitelist");
 
-    my $do_translation = 0;
-    foreach (split(/ /,
-        Irssi::settings_get_str("gtrans_whitelist"))) {
-      $do_translation = 1 if ($witem->{name} eq $_);
-      $do_translation = 1 if ($_ eq "*");
-    }
-
-    unless ($do_translation) {
+    unless (is_whitelisted($witem->{name})) {
       dbg(1, sprintf "Target \"" . $witem->{name} . "\" is " .
                      "not whitelisted");
       return;
@@ -662,6 +681,7 @@
 Irssi::settings_add_str ("gtrans", "gtrans_my_lang",          "en");
 Irssi::settings_add_int ("gtrans", "gtrans_debug",               0);
 Irssi::settings_add_str ("gtrans", "gtrans_whitelist",          "");
+Irssi::settings_add_str ("gtrans", "gtrans_blacklist",          "");
 
 # Register /gtrans command.
 Irssi::command_bind("gtrans",                         "cmd_gtrans");

================================================================
Index: packages/irssi-scripts/irssi-scripts.spec
diff -u packages/irssi-scripts/irssi-scripts.spec:1.49 packages/irssi-scripts/irssi-scripts.spec:1.50
--- packages/irssi-scripts/irssi-scripts.spec:1.49	Sat Jul 25 23:06:30 2009
+++ packages/irssi-scripts/irssi-scripts.spec	Fri Oct 30 14:26:07 2009
@@ -35,8 +35,8 @@
 # Source11-md5:	9e34c85f1084afaa71590bc544dd4e76
 Source12:	http://www.irssi.org/files/irssi-%{irssi_ver}.tar.gz
 # Source12-md5:	226f194576895ff3075c164523806d06
-Source13:	http://scripts.irssi.org/scripts/gtrans.pl
-# Source13-md5:	4dae0dc91daf8bf970a79a170184deb1
+# http://scripts.irssi.org/scripts/gtrans.pl
+Source13:	gtrans.pl
 Patch0:		amarok_ssh-opt-user.patch
 Patch1:		buf-nodumper.patch
 URL:		http://scripts.irssi.org/
@@ -619,6 +619,11 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.50  2009/10/30 13:26:07  glen
+- add nick blacklist via gtrans_blacklist glob-like pattern
+- make gtrans_whitelist work also glob-like not only "*"
+- fix some perl warnings of variable redefinition
+
 Revision 1.49  2009/07/25 21:06:30  arekm
 - maintain forwardfix inside of pld cvs
 
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/irssi-scripts/gtrans.pl?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/irssi-scripts/irssi-scripts.spec?r1=1.49&r2=1.50&f=u



More information about the pld-cvs-commit mailing list