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