2004-12-07 23:21:32 -05:00
|
|
|
! A simple IRC client written in Factor.
|
2004-11-09 12:25:13 -05:00
|
|
|
|
|
|
|
USE: stack
|
|
|
|
USE: stdio
|
2004-12-07 23:21:32 -05:00
|
|
|
USE: namespaces
|
2004-11-09 12:25:13 -05:00
|
|
|
USE: streams
|
2004-12-07 23:21:32 -05:00
|
|
|
USE: combinators
|
|
|
|
USE: threads
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
SYMBOL: irc-stream
|
|
|
|
SYMBOL: channel
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: irc-write ( str -- )
|
|
|
|
irc-stream get fwrite ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: irc-print ( str -- )
|
|
|
|
irc-stream get fprint irc-stream get fflush ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: join ( chan -- )
|
|
|
|
dup channel set "JOIN " irc-write irc-print ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: login ( nick -- )
|
|
|
|
"NICK " irc-write dup irc-print
|
|
|
|
"USER " irc-write irc-write
|
|
|
|
" hostname servername :irc.factor" irc-print ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: connect ( channel nick server -- )
|
|
|
|
6667 <client> irc-stream set login join ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: in-loop ( -- )
|
|
|
|
irc-stream get freadln [ print in-loop ] when* ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: say ( input -- )
|
|
|
|
"PRIVMSG " irc-write
|
|
|
|
channel get irc-write
|
|
|
|
" :" irc-write irc-print ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: say-loop ( -- )
|
|
|
|
read [ say say-loop ] when* ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: disconnect ( -- )
|
|
|
|
irc-stream get fclose ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: input-thread ( -- )
|
|
|
|
[ in-loop ] in-thread ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
: irc ( channel nick server -- )
|
|
|
|
[ connect input-thread say-loop disconnect ] with-scope ;
|
2004-11-09 12:25:13 -05:00
|
|
|
|
2004-12-07 23:21:32 -05:00
|
|
|
"#concatenative" "conc" "irc.freenode.net" irc
|