definition module IRC
+import IRCBot
from Data.Maybe import :: Maybe
-from StdOverloaded import class fromInt, class toInt, class toString
+from Data.Either import :: Either
+from StdOverloaded import class fromInt, class toInt, class toString, class fromString
+from Text.Parsers.Simple.Core import :: Error
-:: IRCCommands
+:: IRCMessage =
+ { irc_prefix :: Maybe (Either String IRCUser)
+ , irc_command :: IRCCommand}
+
+:: IRCUser =
+ { irc_nick :: String
+ , irc_user :: Maybe String
+ , irc_host :: Maybe String
+ }
+
+parseIRCMessage :: (String -> Either [Error] IRCMessage)
+
+instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser
+instance fromInt IRCReplies, IRCErrors
+instance toInt IRCReplies, IRCErrors
+
+:: IRCCommand
= ADMIN (Maybe String)
| AWAY String
- | CONNECT String Int (Maybe String)
+ | CONNECT String (Maybe (Int, Maybe String))
| DIE
| ERROR String
| INFO (Maybe String)
| KICK String String (Maybe String)
| KILL String String
| LINKS (Maybe (Maybe String, String))
- | LIST [String]
+ | LIST (Maybe ([String], Maybe String))
| LUSERS (Maybe (String, Maybe String))
- | MODE String
+ | MODE String String (Maybe String) (Maybe String) (Maybe String)
| MOTD (Maybe String)
| NAMES [String]
- | NICK String
+ | NICK String (Maybe String)
| NJOIN
- | NOTICE
+ | NOTICE String String
| OPER String String
| PART [String]
| PASS String
- | PING [String]
- | PONG [String]
- | PRIVMSG String String
- | QUIT String
+ | PING String (Maybe String)
+ | PONG String (Maybe String)
+ | PRIVMSG [String] String
+ | QUIT (Maybe String)
| REHASH
| RESTART
| SERVER
- | SERVICE
+ | SERVICE String String String String
| SERVLIST (Maybe (String, Maybe String))
| SQUERY String String
| SQUIRT
| USERHOST [String]
| USERS (Maybe String)
| VERSION (Maybe String)
- | WALLOPS
+ | WALLOPS String
| WHO (Maybe String)
| WHOIS (Maybe String) [String]
| WHOWAS (Maybe String) [String]
ERR_NOPRIVILEGES | ERR_CHANOPRIVSNEEDED | ERR_CANTKILLSERVER |
ERR_RESTRICTED | ERR_UNIQOPPRIVSNEEDED | ERR_NOOPERHOST |
ERR_UMODEUNKNOWNFLAG | ERR_USERSDONTMATCH
-
-instance toString IRCCommands, IRCReplies, IRCErrors
-instance fromInt IRCReplies, IRCErrors
-instance toInt IRCReplies, IRCErrors