X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Misc.pm;h=96483e10f5e9aa951cd5ac3ffe940805d6496ec6;hb=7f37aeb466310930ecb7e57e841c285372ffa8aa;hp=926ad0adaa83a71b7b39ea7039e1b56465ae6cb3;hpb=b8b137da117a678f977dcf3699335c335885c029;p=NDIRC.git diff --git a/Misc.pm b/Misc.pm index 926ad0a..96483e1 100644 --- a/Misc.pm +++ b/Misc.pm @@ -23,7 +23,7 @@ require Exporter; our @ISA = qw/Exporter/; -our @EXPORT = qw/valuecolor addCommand parseCommand/; +our @EXPORT = qw/valuecolor addCommand parseCommand commands/; our %channels; our %commands; @@ -64,7 +64,7 @@ sub addCommand { sub parseCommand { my ($msg,$channel) = @_; - if ($msg =~ /^(\w+)(?: (.+))?$/){ + if ($msg =~ /^(\S+)(?: (.+))?$/){ my $c = $1; my $args = $2; my @k = keys %commands; @@ -72,7 +72,7 @@ sub parseCommand { my $a = $commands{$c}->{acc}; my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']); if (intersect($a,$b) > 0){ - $commands{$c}->{fun}->($args); + $commands{$c}->{fun}->($args,$c); return 1; } } @@ -80,6 +80,19 @@ sub parseCommand { return 0; } +sub commands { + my ($channel) = @_; + my @commands; + my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']); + for my $c (sort keys %commands){ + my $a = $commands{$c}->{acc}; + if (intersect($a,$b) > 0){ + push @commands, $c; + } + } + return join ', ', @commands; +} + sub intersect { my ($a, $b) = @_; my %union;