From 25c5e8262227e76b2a3cf914f8be3ffbfb169952 Mon Sep 17 00:00:00 2001 From: Zoffix Znet Date: Wed, 27 Jul 2016 07:03:33 -0400 Subject: More docs --- lib/IRC/Client.pm6 | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/IRC/Client.pm6 b/lib/IRC/Client.pm6 index 91690e7..aa1d132 100644 --- a/lib/IRC/Client.pm6 +++ b/lib/IRC/Client.pm6 @@ -32,6 +32,12 @@ my &colored = try { = GLOBAL::Terminal::ANSIColor::EXPORT::DEFAULT::<&colored>; } // sub (Str $s, $) { $s }; +method join (*@channels, :$server) { + self.send-cmd: 'JOIN', $_, :$server for @channels; + + self; +} + method run { self!prep-servers; .irc = self for @.plugins.grep: { .DEFINITE and .^can: 'irc' }; @@ -82,18 +88,20 @@ method run { await Promise.allof: %!servers.values».; } -method emit-custom (|c) { - $!event-pipe.send: c; -} +# method emit-custom (|c) { +# $!event-pipe.send: c; +# } method send (:$where!, :$text!, :$server, :$notice) { for $server || |%!servers.keys.sort { self.send-cmd: $notice ?? 'NOTICE' !! 'PRIVMSG', $where, $text, :server($_); } + + self; } -method send-cmd ($cmd, *@args is copy, :$server, :$prefix = '') { +method send-cmd ($cmd, *@args is copy, :$prefix = '', :$server) { if $cmd eq 'NOTICE'|'PRIVMSG' and @!filters and my @f = @!filters.grep({ .signature.ACCEPTS: \(@args[1]) @@ -187,6 +195,11 @@ method !handle-event ($e) { for self!plugs-that-can($event, $e) { my $res = ."$event"($e); next if $res ~~ IRC_FLAG_NEXT; + + # Bail out on bogus return values + # dd [ $res, $res ~~ IRC::Client, $res ~~ IRC::Client | Supply | Channel]; + last EVENT if $res ~~ IRC::Client | Supply | Channel; + if $res ~~ Promise { $res.then: { $e.?reply: $^r unless $^r ~~ Nil or $e.?replied; } } else { @@ -208,7 +221,8 @@ method !plugs-that-can ($method, $e) { } } -method !ssay (Str:D $msg, :$server = '*') { +method !ssay (Str:D $msg, :$server is copy) { + $server //= '*'; $!debug and debug-print $msg, :out, :$server; %!servers{ $server }.print("$msg\n"); self; -- cgit v1.1