definition module IRC
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
-:: IRCCommands
+:: IRCMessage =
+ { irc_prefix :: Maybe (Either String IRCUser)
+ , irc_command :: IRCCommand}
+
+:: IRCUser =
+ { irc_nick :: String
+ , irc_user :: Maybe String
+ , irc_host :: Maybe String
+ }
+
+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)
| NAMES [String]
| NICK String
| NJOIN
- | NOTICE
+ | NOTICE String String
| OPER String String
| PART [String]
| PASS String
- | PING [String]
- | PONG [String]
+ | PING String (Maybe String)
+ | PONG String (Maybe String)
| PRIVMSG String String
- | QUIT String
+ | QUIT (Maybe String)
| REHASH
| RESTART
| SERVER
- | SERVICE
+ | SERVICE String String String String
| SERVLIST (Maybe (String, Maybe String))
| SQUERY String String
| SQUIRT
| TIME (Maybe String)
| TOPIC String (Maybe String)
| TRACE (Maybe String)
- | USER String String String
+ | USER String Int String
| 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