Not logged in

Artifact da49077739a2cefa573447820cbb8ba8a4dea48a

File user/crc/irc.retro part of check-in [1434cca35f] - crcx irc.retro now uses chained vocabularies by crc on 2010-08-14 14:29:34. [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                                                 )
( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
( n lines   Read n lines from server                          )
( line      Read 1 line from server                           )
( skim      Read from server, pausing after each line. If     )
(           esc is hit, stop, otherwise continue.             )
( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )

chain: irc
  ( 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 ;
  }}
;chain

with irc

( Make Connection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
/server kornbluth.freenode.net
/nick rx-irc
/user crc_rxirc
/join #retro
in #retro