attempt a generic implementation
[cloogle-irc.git] / IRC.dcl
diff --git a/IRC.dcl b/IRC.dcl
index 3c5a3d1..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
 
@@ -31,12 +41,12 @@ instance toInt IRCReplies, IRCErrors
        | 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 String String
        | OPER String String 
@@ -44,7 +54,7 @@ instance toInt IRCReplies, IRCErrors
        | PASS String
        | PING String (Maybe String)
        | PONG String (Maybe String)
-       | PRIVMSG String String
+       | PRIVMSG [String] String
        | QUIT (Maybe String)
        | REHASH 
        | RESTART 
@@ -59,7 +69,7 @@ instance toInt IRCReplies, IRCErrors
        | TIME (Maybe String)
        | TOPIC String (Maybe String)
        | TRACE (Maybe String)
-       | USER String Int String
+       | USER String String String
        | USERHOST [String]
        | USERS (Maybe String)
        | VERSION (Maybe String)