From d2da9fcd250533bee5df17bd182648a8cea0d7b0 Mon Sep 17 00:00:00 2001 From: Zoffix Znet Date: Sun, 6 Dec 2015 18:07:19 -0500 Subject: Prerelease --- lib/IRC/Client.pm6 | 16 ++++++++++------ lib/IRC/Client/Plugin.pm6 | 8 -------- lib/IRC/Client/Plugin/Debugger.pm6 | 9 ++++----- lib/IRC/Client/Plugin/HNY.pm6 | 26 -------------------------- lib/IRC/Client/Plugin/PingPong.pm6 | 10 ++++++++++ lib/IRC/Grammar/Actions.pm6 | 9 ++++----- 6 files changed, 28 insertions(+), 50 deletions(-) delete mode 100644 lib/IRC/Client/Plugin.pm6 delete mode 100644 lib/IRC/Client/Plugin/HNY.pm6 create mode 100644 lib/IRC/Client/Plugin/PingPong.pm6 (limited to 'lib/IRC') diff --git a/lib/IRC/Client.pm6 b/lib/IRC/Client.pm6 index dcf0fcb..a27c18d 100644 --- a/lib/IRC/Client.pm6 +++ b/lib/IRC/Client.pm6 @@ -1,5 +1,6 @@ use v6; use IRC::Parser; # parse-irc +use IRC::Client::Plugin::PingPong; role IRC::Client::Plugin { ... } class IRC::Client:ver<1.001001> { has Bool:D $.debug = False; @@ -11,8 +12,10 @@ class IRC::Client:ver<1.001001> { has Str:D $.userreal = 'Perl6 IRC Client'; has Str:D @.channels = ['#perl6bot']; has IO::Socket::Async $.sock; - has IRC::Client::Plugin @.plugins = []; - has IRC::Client::Plugin @.plugins-essential = []; + has @.plugins = []; + has @.plugins-essential = [ + IRC::Client::Plugin::PingPong.new + ]; method run { await IO::Socket::Async.connect( $!host, $!port ).then({ @@ -27,10 +30,11 @@ class IRC::Client:ver<1.001001> { react { whenever $!sock.Supply -> $str is copy { $!debug and $str.say; - # say parse-irc($str).WHAT; - my $x = parse-irc $str; - @!plugins[0].msg(self, $x); - .msg(self, $x) for @!plugins.grep(*.msg); + my $messages = parse-irc $str; + for @$messages -> $message { + .msg(self, $message) + for (@!plugins-essential, @!plugins).flat.grep(*.msg); + } } } diff --git a/lib/IRC/Client/Plugin.pm6 b/lib/IRC/Client/Plugin.pm6 deleted file mode 100644 index 724447e..0000000 --- a/lib/IRC/Client/Plugin.pm6 +++ /dev/null @@ -1,8 +0,0 @@ -use v6; -use IRC::Client; -unit role IRC::Client::Plugin:ver<1.001001>; - -multi method inverval ( ) { 0 } -multi method inverval (IRC::Client) { ... } -multi method msg ( ) { False } -multi method msg (IRC::Client) { ... } diff --git a/lib/IRC/Client/Plugin/Debugger.pm6 b/lib/IRC/Client/Plugin/Debugger.pm6 index 20a2283..dabb353 100644 --- a/lib/IRC/Client/Plugin/Debugger.pm6 +++ b/lib/IRC/Client/Plugin/Debugger.pm6 @@ -1,15 +1,14 @@ use v6; -use IRC::Client; -use IRC::Client::Plugin; -unit class IRC::Client::Plugin::Debugger:ver<1.001001> does IRC::Client::Plugin; +use Data::Dump; +unit class IRC::Client::Plugin::Debugger:ver<1.001001>; multi method msg () { True } multi method msg ($irc, $msg) { - $msg.say; + say Dump $msg, :indent(4); } multi method interval ( ) { 6 } -multi method interval (IRC::Client $irc) { +multi method interval ($irc) { $irc.privmsg( $irc.channels[0], "5 seconds passed. Time is now " ~ now ); diff --git a/lib/IRC/Client/Plugin/HNY.pm6 b/lib/IRC/Client/Plugin/HNY.pm6 deleted file mode 100644 index ce7154d..0000000 --- a/lib/IRC/Client/Plugin/HNY.pm6 +++ /dev/null @@ -1,26 +0,0 @@ -use v6; -use JSON::Tiny; -use IRC::Client; -use IRC::Client::Plugin; - -unit class IRC::Client::Plugin::HNY:ver<1.001001> does IRC::Client::Plugin; - - -get_UTC_offsets(); - -multi method interval ( ) { 6 } -multi method interval (IRC::Client $irc) { - $irc.privmsg( - $irc.channels[0], "5 seconds passed. Time is now " ~ now - ); -} - - - -sub get_UTC_offsets { - my $times = from-json 'tzs.json'.IO.slurp; - - for $times -> $zone { - say "Offset is $zone"; - } -} diff --git a/lib/IRC/Client/Plugin/PingPong.pm6 b/lib/IRC/Client/Plugin/PingPong.pm6 new file mode 100644 index 0000000..7ba977d --- /dev/null +++ b/lib/IRC/Client/Plugin/PingPong.pm6 @@ -0,0 +1,10 @@ +use v6; +unit class IRC::Client::Plugin::PingPong:ver<1.001001>; + +multi method msg () { True } +multi method msg ($irc, $msg) { + return unless $msg eq 'PING'; + my $res = "PONG {$irc.nick} $msg[0]"; + $irc.debug and say $res; + $irc.ssay($res); +} diff --git a/lib/IRC/Grammar/Actions.pm6 b/lib/IRC/Grammar/Actions.pm6 index 7093b99..74a8f11 100644 --- a/lib/IRC/Grammar/Actions.pm6 +++ b/lib/IRC/Grammar/Actions.pm6 @@ -3,12 +3,11 @@ method TOP ($/) { $/.make: $>>.made } method message ($/) { my $pref = $/; my %args = command => ~$/; - if ( $pref.defined ) { - %args = ~$pref; - } - else { - %args = $prefยป.Str; + for qw/nick user host/ { + $pref{$_}.defined or next; + %args{$_} = $pref{$_}.Str; } + %args = ~$pref if $pref.defined; my $p = $/; loop { -- cgit v1.1