first2 [ >>who ] [ >>channel ] bi* ;
M: mode >>command-parameters ( mode params -- mode )
- dup length 3 = [
- first3 [ >>name ] [ >>mode ] [ >>parameter ] tri*
- ] [
- first2 [ >>name ] [ >>mode ] bi*
- ] if ;
+ dup length {
+ { 3 [ first3 [ >>name ] [ >>mode ] [ >>parameter ] tri* ] }
+ { 2 [ first2 [ >>name ] [ >>mode ] bi* ] }
+ [ drop first >>name dup trailing>> >>mode ]
+ } case ;
PRIVATE>
: copy-message-in ( command irc-message -- command )
{
- [ parameters>> [ >>parameters ] [ >>command-parameters ] bi ]
[ line>> >>line ]
[ prefix>> >>prefix ]
[ command>> >>command ]
[ trailing>> >>trailing ]
[ timestamp>> >>timestamp ]
+ [ parameters>> [ >>parameters ] [ >>command-parameters ] bi ]
} cleave ;
PRIVATE>