X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=tools.pl;h=bf6af1804e4f3e6456d79e88646a9fd2c65ccd84;hb=c121cd3291c152431e30f27a7fcd754ec07aaceb;hp=bd98aa396028bcda91a20ed7c8f9726419cdd7ca;hpb=263b6777b90548951a13bd56419fa911b010eb9b;p=perl%2Fscripts%2Fxchat.git diff --git a/tools.pl b/tools.pl index bd98aa3..bf6af18 100755 --- a/tools.pl +++ b/tools.pl @@ -11,7 +11,9 @@ use Xchat qw/:all/; use lib get_info 'xchatdir'; use Xchat::XPI; -our $VERSION = '0.04'; +use constant MAX_MATCHES => 10; + +our $VERSION = '0.05'; my $ph; @@ -113,6 +115,31 @@ hook_command 'WIDE', sub { help_text => 'WIDE , say text in wide unicode characters' }; +hook_command 'HGREP', sub { + my $txt = $_[1][1]; + return EAT_ALL unless defined $txt; + $txt = qr/$txt/i; + my @matches; + for (get_list 'users') { + my $host = $_->{host}; + next unless $host =~ /$txt/; + push @matches, [ $_->{nick}, $host ]; + } + my $nbr = @matches; + print $ph ($nbr == 0 ? 'No' : $nbr) + . ' match' . ('es' x ($nbr > 1)) + . ' to ' . $txt; + if (@matches < MAX_MATCHES) { + print $ph +(':' x ($nbr > 0)) . "\n"; + print $ph "\002$_->[0]\002 ($_->[1])\n" for @matches; + } else { + print $ph " (too many of them, omitted)\n"; + } + return EAT_ALL; +}, { + help_text => 'HGREP , print users in the current context whose hostname matches text' +}; + $ph = new Xchat::XPI name => 'Misc tools', tag => 'Tools', desc => 'Perl interpretor, URI escaper',