attempt a generic implementation
[cloogle-irc.git] / IRC.dcl
diff --git a/IRC.dcl b/IRC.dcl
index 0fffb7e..d910183 100644 (file)
--- a/IRC.dcl
+++ b/IRC.dcl
@@ -1,12 +1,20 @@
 definition module IRC
 
+import IRCBot
 from Data.Maybe import :: Maybe
 from Data.Either import :: Either
 from StdOverloaded import class fromInt, class toInt, class toString, class fromString
+from Text.Parsers.Simple.Core import :: Error
 
 :: IRCMessage =
-       { irc_prefix :: Maybe (Either String IRCUser)
-       , irc_command :: IRCCommand}
+       { 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
@@ -14,7 +22,9 @@ from StdOverloaded import class fromInt, class toInt, class toString, class from
        , irc_host :: Maybe String
        }
 
-instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser
+parseIRCMessage :: String -> Either [Error] IRCMessage
+
+instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser, IRCNumReply
 instance fromInt IRCReplies, IRCErrors
 instance toInt IRCReplies, IRCErrors