package NDIRC::Misc;
use strict;
use warnings;
-require Exporter;
-
-our @ISA = qw/Exporter/;
+use feature ':5.10';
-our @EXPORT = qw/valuecolor addCommand parseCommand commands/;
+require Exporter;
-our %channels;
-our %commands;
+use NDIRC::Context;
-$channels{'#def-ndawn'} = ['all','member','def'];
-$channels{'#nd'} = ['all','member'];
-$channels{'#ndef'} = ['all','member','scan'];
-$channels{'#nd-day'} = ['all','member'];
-$channels{'#ndintel'} = ['all','member'];
-$channels{'#nd-officers'} = ['all','member'];
-$channels{'#ndawn'} = ['all'];
-$channels{'pm'} = ['pm'];
+our @ISA = qw/Exporter/;
-$ND::defchan = "#def-ndawn";
-$ND::memchan = "#nd";
-$ND::scanchan = "#ndef";
-$ND::bcchan = "#nd-day";
-$ND::intelchan = "#ndintel";
-$ND::officerchan = "#nd-officers";
-$ND::communitychan = "#ndawn";
-$ND::pubchan = "#newdawn";
+our @EXPORT = qw/valuecolor parseCommand/;
sub valuecolor {
my $s = $_;
return $s;
}
-sub addCommand {
- my ($command, $list, $func) = @_;
- $commands{$command} = {fun => $func, acc => $list};
-}
-
sub parseCommand {
- my ($msg,$channel) = @_;
- if ($msg =~ /^(\w+)(?: (.+))?$/){
- my $c = $1;
- my $args = $2;
- my @k = keys %commands;
- if (exists $commands{$c}){
- my $a = $commands{$c}->{acc};
- my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']);
- if (intersect($a,$b) > 0){
- $commands{$c}->{fun}->($args,$c);
- return 1;
- }
+ my ($msg, $server, $nick, $address, $channel, $disp,$model) = @_;
+
+ return if $channel !~ /^#/ && $msg =~ /^~/;
+ $msg = ".$msg" if $channel !~ /^#/ && $msg =~ /^[^.!]/;
+
+ my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/);
+
+ if ($msg =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\w+)}){
+ if (!$command || $command =~ m{^http://}){
+ ($p,$command,$args) = ('.','addscan',$msg);
+ }elsif($command ne 'addscan'){
+ parseCommand (".addscan $msg", $server, $nick, $address, $channel, $disp,$model)
}
}
- 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 0 unless $disp->has_command($command,$channel);
+
+ my $reply_string;
+ given ($p){
+ when ('!'){
+ $reply_string = "msg $nick";
+ }
+ when ('~'){
+ $reply_string = "msg $channel";
+ }
+ default {
+ $reply_string = "notice $nick";
}
}
- return join ', ', @commands;
-}
-sub intersect {
- my ($a, $b) = @_;
- my %union;
- foreach my $e (@{$a}) { $union{$e} = 1 }
+ $address =~ s/.*@(.*)/$1/;
+ my $c = NDIRC::Context->new({
+ host => $address,
+ nick => $nick,
+ channel => $channel,
+ disp => $disp,
+ model => $model,
+ server => $server,
+ reply_string => $reply_string,
+ });
- my %isect;
- foreach my $e (@{$b}) {
- $isect{$e} = 1 if ( exists $union{$e} )
- }
- return keys %isect;
+ return $disp->run_command($c,$command,$args);
}
1;