X-Git-Url: https://git.martlubbers.net/?p=cloogle-irc.git;a=blobdiff_plain;f=IRC.dcl;h=d910183c56596a61f2c11a59f59bb340c220a816;hp=d476d725e16f97288fe5bbead7dfc28345aad898;hb=226254ae192a8a5f2a69f3e35a6823fad36f4d0c;hpb=87d709d61dae99cc468f52927e8246b3b6bc9022 diff --git a/IRC.dcl b/IRC.dcl index d476d72..d910183 100644 --- a/IRC.dcl +++ b/IRC.dcl @@ -1,12 +1,37 @@ 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 IRCUser String) + , irc_command :: Either IRCNumReply IRCCommand} + +:: IRCNumReply = + { irc_reply :: IRCReplies + , irc_recipient :: String + , irc_message :: String + } + +:: IRCUser = + { irc_nick :: String + , irc_user :: Maybe String + , irc_host :: Maybe String + } + +parseIRCMessage :: String -> Either [Error] IRCMessage + +instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser, IRCNumReply +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) @@ -16,25 +41,25 @@ from StdOverloaded import class fromInt, class toInt, class toString | 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 @@ -48,7 +73,7 @@ from StdOverloaded import class fromInt, class toInt, class toString | USERHOST [String] | USERS (Maybe String) | VERSION (Maybe String) - | WALLOPS + | WALLOPS String | WHO (Maybe String) | WHOIS (Maybe String) [String] | WHOWAS (Maybe String) [String] @@ -90,7 +115,3 @@ from StdOverloaded import class fromInt, class toInt, class toString 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