Artifact 870f687f819ef3466e7850a755bc0a3c36eb5e67
File user/crc/irc.retro part of check-in [d74c66514a] - irc; more refactoring, cleanups by crc on 2010-06-17 18:24:42. [annotate]
( Rx to IRC Bindings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
( Copyright [c] 2010, Charles Childers )
( License: ISC )
( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
( Commands: )
( /server servername )
( /nick nickname )
( /who identity )
( /join channel )
( say text<esc> )
( in channel )
( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
&net open
( Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
create crlf 10 , 13 , 0 ,
2 elements socket channel
( Code ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
: send ( $- ) @socket net.send drop ;
: sendn ( $- ) send crlf send ;
: token ( "-a ) 32 accept tib ;
: read ( -c ) @socket net.recv ;
: pong ( - ) s" PONG :kornbluth.freenode.net" sendn ;
{{
: r ( - )
repeat read dup 10 = over 13 = or if; emit again ;
---reveal---
: line ( - ) r r pong reset cr ;
: lines ( n- ) for line next ;
: skim ( "- ) repeat key 27 = if; line again ;
}}
: in ( "- ) token keepString !channel ;
{{
: to ( - ) s" PRIVMSG " send @channel send s" :" send ;
: msg ( "- ) 27 accept tib sendn ;
---reveal---
: say ( "- ) to msg pong ;
}}
: /server ( "- )
token 6667 net.socket dup !socket net.connect drop ;
: /nick ( "- ) s" NICK " send token sendn ;
: /join ( "- ) s" JOIN " send token sendn ;
{{
: who ( "- ) s" USER " send token send ;
: ident ( - ) s" 8 * : Charles Childers" sendn ;
---reveal---
: /user ( "- ) who ident ;
}}
( Make Connection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
/server kornbluth.freenode.net
/nick rx-irc
/user crc
/join #retro
in #retro