Not logged in

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