X-Git-Url: https://git.martlubbers.net/?p=cloogle-irc.git;a=blobdiff_plain;f=IRC.dcl;h=ae14b8f625c5effa46a563a2c7e55a95c90c788a;hp=3c5a3d18516bef9480b8215153f0b9bf0bf36e82;hb=3134ab7e61bcbc84560b4a5d613a92b1a48362c2;hpb=000d2eb9df3a1521626dc996b8f9f0281c55a6f1 diff --git a/IRC.dcl b/IRC.dcl index 3c5a3d1..ae14b8f 100644 --- a/IRC.dcl +++ b/IRC.dcl @@ -1,8 +1,10 @@ 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) @@ -14,6 +16,8 @@ from StdOverloaded import class fromInt, class toInt, class toString, class from , irc_host :: Maybe String } +parseIRCMessage :: (String -> Either [Error] IRCMessage) + instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser instance fromInt IRCReplies, IRCErrors instance toInt IRCReplies, IRCErrors @@ -31,12 +35,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 +48,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 +63,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)