M: join forward-name ( join -- name ) trailing>> ;
M: part forward-name ( part -- name ) channel>> ;
M: kick forward-name ( kick -- name ) channel>> ;
-M: mode forward-name ( mode -- name ) channel>> ;
+M: mode forward-name ( mode -- name ) name>> ;
M: privmsg forward-name ( privmsg -- name )
dup name>> me? [ irc-message-sender ] [ name>> ] if ;
{ prefix "ircserver.net" }
{ command "MODE" }
{ parameters { "#factortest" "+ns" } }
- { channel "#factortest" }
+ { name "#factortest" }
{ mode "+ns" } } }
[ ":ircserver.net MODE #factortest +ns"
parse-irc-line f >>timestamp ] unit-test
{ prefix "ircserver.net" }
{ command "MODE" }
{ parameters { "#factortest" "+o" "someuser" } }
- { channel "#factortest" }
+ { name "#factortest" }
{ mode "+o" }
{ parameter "someuser" } } }
[ ":ircserver.net MODE #factortest +o someuser"
parse-irc-line f >>timestamp ] unit-test
-{ T{ mode
- { line ":ircserver.net MODE someuser +i" }
- { prefix "ircserver.net" }
- { command "MODE" }
- { parameters { "someuser" "+i" } }
- { nickname "someuser" }
- { mode "+i" } } }
-[ ":ircserver.net MODE someuser +i"
- parse-irc-line f >>timestamp ] unit-test
-
{ T{ nick
{ line ":someuser!n=user@some.where NICK :someuser2" }
{ prefix "someuser!n=user@some.where" }
TUPLE: roomlist < irc-message channel names ;
TUPLE: nick-in-use < irc-message asterisk name ;
TUPLE: notice < irc-message type ;
-TUPLE: mode < irc-message channel mode nickname parameter ;
+TUPLE: mode < irc-message name mode parameter ;
TUPLE: names-reply < irc-message who channel ;
TUPLE: unhandled < irc-message ;
<PRIVATE
-: channel? ( string -- ? )
- first "#&" member? ;
-
GENERIC: command-string>> ( irc-message -- string )
M: irc-message command-string>> ( irc-message -- string ) command>> ;
M: mode command-parameters>> ( mode -- seq )
[ name>> ] [ channel>> ] [ mode>> ] tri 3array ;
-: (>>channel|nickname) ( string mode -- )
- over channel? [ (>>channel) ] [ (>>nickname) ] if ;
-
GENERIC: (>>command-parameters) ( params irc-message -- )
M: irc-message (>>command-parameters) ( params irc-message -- ) 2drop ;
M: names-reply (>>command-parameters) ( params names-reply -- )
[ >r first r> (>>who) ] [ >r third r> (>>channel) ] 2bi ;
M: mode (>>command-parameters) ( params mode -- )
- { { [ >r 2array r> ] [ [ (>>mode) ] [ (>>channel|nickname) ] bi ] }
- { [ >r 3array r> ] [ [ (>>parameter) ] [ (>>mode) ] [ (>>channel) ] tri ] }
+ { { [ >r 2array r> ] [ [ (>>mode) ] [ (>>name) ] bi ] }
+ { [ >r 3array r> ] [ [ (>>parameter) ] [ (>>mode) ] [ (>>name) ] tri ] }
} switch ;
PRIVATE>