X-Git-Url: https://git.martlubbers.net/?p=cloogle-irc.git;a=blobdiff_plain;f=IRC.dcl;h=6cca24eea99aafbd60188dbb36c589d9a54de024;hp=ae14b8f625c5effa46a563a2c7e55a95c90c788a;hb=1c65613d8732d28f6c6c11864ccbc761918ac594;hpb=3134ab7e61bcbc84560b4a5d613a92b1a48362c2 diff --git a/IRC.dcl b/IRC.dcl index ae14b8f..6cca24e 100644 --- a/IRC.dcl +++ b/IRC.dcl @@ -1,27 +1,34 @@ 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 Data.Either import :: Either +from Data.Maybe import :: Maybe 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 - , irc_user :: Maybe String - , irc_host :: Maybe String + { irc_nick :: String + , irc_user :: Maybe String + , irc_host :: Maybe String } -parseIRCMessage :: (String -> Either [Error] IRCMessage) +parseIRCMessage :: String -> Either [Error] IRCMessage -instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser +instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser, IRCNumReply instance fromInt IRCReplies, IRCErrors instance toInt IRCReplies, IRCErrors +:: CSepList = CSepList [String] :: IRCCommand = ADMIN (Maybe String) | AWAY String @@ -31,24 +38,24 @@ instance toInt IRCReplies, IRCErrors | INFO (Maybe String) | INVITE String String | ISON [String] - | JOIN [(String, Maybe String)] + | JOIN CSepList (Maybe String) | KICK String String (Maybe String) | KILL String String | LINKS (Maybe (Maybe String, String)) - | LIST (Maybe ([String], Maybe String)) + | LIST (Maybe (CSepList, Maybe String)) | LUSERS (Maybe (String, Maybe String)) | MODE String String (Maybe String) (Maybe String) (Maybe String) | MOTD (Maybe String) - | NAMES [String] + | NAMES CSepList | NICK String (Maybe String) | NJOIN | NOTICE String String | OPER String String - | PART [String] + | PART CSepList | PASS String | PING String (Maybe String) | PONG String (Maybe String) - | PRIVMSG [String] String + | PRIVMSG CSepList String | QUIT (Maybe String) | REHASH | RESTART @@ -63,14 +70,14 @@ instance toInt IRCReplies, IRCErrors | TIME (Maybe String) | TOPIC String (Maybe String) | TRACE (Maybe String) - | USER String String String - | USERHOST [String] + | USER String String String String + | USERHOST CSepList | USERS (Maybe String) | VERSION (Maybe String) | WALLOPS String | WHO (Maybe String) - | WHOIS (Maybe String) [String] - | WHOWAS (Maybe String) [String] + | WHOIS (Maybe String) String + | WHOWAS String (Maybe (String, Maybe String)) :: IRCReplies = RPL_WELCOME | RPL_YOURHOST | RPL_CREATED | RPL_MYINFO | RPL_BOUNCE | RPL_TRACELINK | RPL_TRACECONNECTING | RPL_TRACEHANDSHAKE | @@ -91,7 +98,7 @@ instance toInt IRCReplies, IRCErrors RPL_ENDOFBANLIST | RPL_ENDOFWHOWAS | RPL_INFO | RPL_MOTD | RPL_ENDOFINFO | RPL_MOTDSTART | RPL_ENDOFMOTD | RPL_YOUREOPER | RPL_REHASHING | RPL_YOURESERVICE | RPL_TIME | RPL_USERSSTART | RPL_USERS | RPL_ENDOFUSERS | - RPL_NOUSERS + RPL_NOUSERS | RPL_UNKNOWN :: IRCErrors = ERR_NOSUCHNICK | ERR_NOSUCHSERVER | ERR_NOSUCHCHANNEL | ERR_CANNOTSENDTOCHAN | ERR_TOOMANYCHANNELS | ERR_WASNOSUCHNICK | @@ -103,9 +110,10 @@ instance toInt IRCReplies, IRCErrors ERR_NOTONCHANNEL | ERR_USERONCHANNEL | ERR_NOLOGIN | ERR_SUMMONDISABLED | ERR_USERSDISABLED | ERR_NOTREGISTERED | ERR_NEEDMOREPARAMS | ERR_ALREADYREGISTRED | ERR_NOPERMFORHOST | ERR_PASSWDMISMATCH | - ERR_YOUREBANNEDCREEP | ERR_YOUWILLBEBANNED | ERR_KEYSET | ERR_CHANNELISFULL | - ERR_UNKNOWNMODE | ERR_INVITEONLYCHAN | ERR_BANNEDFROMCHAN | - ERR_BADCHANNELKEY | ERR_BADCHANMASK | ERR_NOCHANMODES | ERR_BANLISTFULL | - ERR_NOPRIVILEGES | ERR_CHANOPRIVSNEEDED | ERR_CANTKILLSERVER | - ERR_RESTRICTED | ERR_UNIQOPPRIVSNEEDED | ERR_NOOPERHOST | - ERR_UMODEUNKNOWNFLAG | ERR_USERSDONTMATCH + ERR_YOUREBANNEDCREEP | ERR_YOUWILLBEBANNED | ERR_KEYSET | + ERR_CHANNELISFULL | ERR_UNKNOWNMODE | ERR_INVITEONLYCHAN | + ERR_BANNEDFROMCHAN | ERR_BADCHANNELKEY | ERR_BADCHANMASK | + ERR_NOCHANMODES | ERR_BANLISTFULL | ERR_NOPRIVILEGES | + ERR_CHANOPRIVSNEEDED | ERR_CANTKILLSERVER | ERR_RESTRICTED | + ERR_UNIQOPPRIVSNEEDED | ERR_NOOPERHOST | ERR_UMODEUNKNOWNFLAG | + ERR_USERSDONTMATCH | ERR_UNKNOWN