]> gitweb.factorcode.org Git - factor.git/blob - extra/irc/logbot/log-line/log-line.factor
Switch to https urls
[factor.git] / extra / irc / logbot / log-line / log-line.factor
1 ! Copyright (C) 2009 Bruno Deferrari.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors irc.messages irc.messages.base kernel make
4 combinators sequences ;
5 IN: irc.logbot.log-line
6
7 : dot-or-parens ( string -- string )
8     [ "." ] [ " (" prepend ")." append ] if-empty ;
9
10 GENERIC: >log-line ( object -- line )
11
12 M: irc-message >log-line line>> ;
13
14 M: ctcp >log-line
15     [ "CTCP: " % dup sender>> % " " % text>> % ] "" make ;
16
17 M: action >log-line
18     [ "* " % dup sender>> % " " % text>> % ] "" make ;
19
20 M: privmsg >log-line
21     [ "<" % dup sender>> % "> " % text>> % ] "" make ;
22
23 : prefix% ( string -- )
24     " [" % % "]" % ;
25
26 M: irc.messages:join >log-line
27     [
28         [ "* " % sender>> % ]
29         [ prefix>> prefix% " has joined the channel." % ] bi
30     ] "" make ;
31
32 M: part >log-line
33     [
34         [ "* " % sender>> % ]
35         [ prefix>> prefix% " has left the channel" % ]
36         [ comment>> dot-or-parens % ] tri
37     ] "" make ;
38
39 M: quit >log-line
40     [
41         [ "* " % sender>> % ]
42         [ prefix>> prefix% " has quit" % ]
43         [ comment>> dot-or-parens % ] tri
44     ] "" make ;
45
46 M: kick >log-line
47     [
48         {
49             [ "* " % sender>> % ]
50             [ " has kicked " % user>> % ]
51             [ " from the channel" % comment>> dot-or-parens % ]
52          } cleave
53     ] "" make ;
54
55 M: participant-mode >log-line
56     [
57         {
58             [ "* " % sender>> % ]
59             [ " has set mode " % mode>> % ]
60             [ " to " % parameter>> % ]
61         } cleave
62     ] "" make ;
63
64 M: nick >log-line
65     [ "* " % dup sender>> % " is now known as " % nickname>> % ] "" make ;
66
67 M: topic >log-line
68     [ "* " % dup sender>> % " has set the topic for " % dup channel>> %
69       ": \"" % topic>> % "\"" % ] "" make ;