-:: IRCCommands = ADMIN | AWAY | CONNECT | DIE | ERROR | INFO | INVITE | ISON |
- JOIN | KICK | KILL | LINKS | LIST | LUSERS | MODE | MOTD | NAMES | NICK |
- NJOIN | NOTICE | OPER | PART | PASS | PING | PONG | PRIVMSG | QUIT |
- REHASH | RESTART | SERVER | SERVICE | SERVLIST | SQUERY | SQUIRT | SQUIT |
- STATS | SUMMON | TIME | TOPIC | TRACE | USER | USERHOST | USERS | VERSION |
- WALLOPS | WHO | WHOIS | WHOWAS
+:: IRCMessage =
+ { irc_prefix :: Maybe (Either IRCUser String)
+ , irc_command :: Either IRCNumReply IRCCommand}
+
+:: IRCNumReply =
+ { irc_reply :: IRCReplies
+ , irc_recipient :: String
+ , irc_message :: String
+ }
+
+:: IRCUser =
+ { irc_nick :: String
+ , irc_user :: Maybe String
+ , irc_host :: Maybe String
+ }
+
+parseIRCMessage :: String -> Either [Error] IRCMessage
+
+instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser, IRCNumReply
+instance fromInt IRCReplies, IRCErrors
+instance toInt IRCReplies, IRCErrors
+
+:: CSepList = CSepList [String]
+:: IRCCommand
+ = ADMIN (Maybe String)
+ | AWAY String
+ | CONNECT String (Maybe (Int, Maybe String))
+ | DIE
+ | ERROR String
+ | INFO (Maybe String)
+ | INVITE String String
+ | ISON [String]
+ | JOIN CSepList (Maybe String)
+ | KICK String String (Maybe String)
+ | KILL String String
+ | LINKS (Maybe (Maybe String, String))
+ | LIST (Maybe (CSepList, Maybe String))
+ | LUSERS (Maybe (String, Maybe String))
+ | MODE String String (Maybe String) (Maybe String) (Maybe String)
+ | MOTD (Maybe String)
+ | NAMES CSepList
+ | NICK String (Maybe String)
+ | NJOIN
+ | NOTICE String String
+ | OPER String String
+ | PART CSepList
+ | PASS String
+ | PING String (Maybe String)
+ | PONG String (Maybe String)
+ | PRIVMSG CSepList String
+ | QUIT (Maybe String)
+ | REHASH
+ | RESTART
+ | SERVER
+ | SERVICE String String String String
+ | SERVLIST (Maybe (String, Maybe String))
+ | SQUERY String String
+ | SQUIRT
+ | SQUIT String String
+ | STATS (Maybe (String, Maybe String))
+ | SUMMON String (Maybe (String, Maybe String))
+ | TIME (Maybe String)
+ | TOPIC String (Maybe String)
+ | TRACE (Maybe String)
+ | USER String String String String
+ | USERHOST CSepList
+ | USERS (Maybe String)
+ | VERSION (Maybe String)
+ | WALLOPS String
+ | WHO (Maybe String)
+ | WHOIS (Maybe String) String
+ | WHOWAS String (Maybe (String, Maybe String))