From: Vincent Pit Date: Thu, 13 Nov 2008 17:02:02 +0000 (+0100) Subject: Implement HGREP X-Git-Url: http://git.vpit.fr/?p=perl%2Fscripts%2Fxchat.git;a=commitdiff_plain;h=742dde9fdf8ef61c1a1382d326aaa2c1293a9f54 Implement HGREP --- diff --git a/tools.pl b/tools.pl index bd98aa3..f162dad 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/; + 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',