From 87d709d61dae99cc468f52927e8246b3b6bc9022 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Sun, 5 Mar 2017 13:11:02 +0100 Subject: [PATCH] Formalized IRC commands --- IRC.dcl | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------ IRC.icl | 7 ++++--- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/IRC.dcl b/IRC.dcl index 157b6d7..d476d72 100644 --- a/IRC.dcl +++ b/IRC.dcl @@ -1,13 +1,57 @@ definition module IRC +from Data.Maybe import :: Maybe from StdOverloaded import class fromInt, class toInt, class toString -:: IRCCommands = ADMIN | AWAY | CONNECT | DIE | ERROR | INFO | INVITE | ISON | - JOIN | KICK | KILL | LINKS | LIST | LUSERS | MODE | MOTD | NAMES | NICK | - NJOIN | NOTICE | OPER | PART | PASS | PING | PONG | PRIVMSG | QUIT | - REHASH | RESTART | SERVER | SERVICE | SERVLIST | SQUERY | SQUIRT | SQUIT | - STATS | SUMMON | TIME | TOPIC | TRACE | USER | USERHOST | USERS | VERSION | - WALLOPS | WHO | WHOIS | WHOWAS +:: IRCCommands + = ADMIN (Maybe String) + | AWAY String + | CONNECT String Int (Maybe String) + | DIE + | ERROR String + | INFO (Maybe String) + | INVITE String String + | ISON [String] + | JOIN [(String, Maybe String)] + | KICK String String (Maybe String) + | KILL String String + | LINKS (Maybe (Maybe String, String)) + | LIST [String] + | LUSERS (Maybe (String, Maybe String)) + | MODE String + | MOTD (Maybe String) + | NAMES [String] + | NICK String + | NJOIN + | NOTICE + | OPER String String + | PART [String] + | PASS String + | PING [String] + | PONG [String] + | PRIVMSG String String + | QUIT String + | REHASH + | RESTART + | SERVER + | SERVICE + | SERVLIST (Maybe (String, Maybe String)) + | SQUERY String String + | SQUIRT + | SQUIT String String + | STATS (Maybe (String, Maybe String)) + | SUMMON String (Maybe (String, Maybe String)) + | TIME (Maybe String) + | TOPIC String (Maybe String) + | TRACE (Maybe String) + | USER String String String + | USERHOST [String] + | USERS (Maybe String) + | VERSION (Maybe String) + | WALLOPS + | WHO (Maybe String) + | WHOIS (Maybe String) [String] + | WHOWAS (Maybe String) [String] :: IRCReplies = RPL_WELCOME | RPL_YOURHOST | RPL_CREATED | RPL_MYINFO | RPL_BOUNCE | RPL_TRACELINK | RPL_TRACECONNECTING | RPL_TRACEHANDSHAKE | diff --git a/IRC.icl b/IRC.icl index 4f20623..50a42e9 100644 --- a/IRC.icl +++ b/IRC.icl @@ -2,9 +2,10 @@ implementation module IRC import GenPrint import StdOverloaded +import Data.Maybe from StdMisc import undef -derive gPrint IRCCommands, IRCReplies, IRCErrors +derive gPrint IRCCommands, IRCReplies, IRCErrors, (,), Maybe, () instance toString IRCCommands where toString r = printToString r instance toString IRCReplies where toString r = printToString r @@ -33,7 +34,7 @@ instance fromInt IRCReplies where 219 = RPL_ENDOFSTATS 221 = RPL_UMODEIS 234 = RPL_SERVLIST - 234 = RPL_SERVLISTEND + 235 = RPL_SERVLISTEND 242 = RPL_STATSUPTIME 243 = RPL_STATSOLINE 251 = RPL_LUSERCLIENT @@ -81,7 +82,7 @@ instance fromInt IRCReplies where 365 = RPL_ENDOFLINKS 366 = RPL_ENDOFNAMES 367 = RPL_BANLIST - 367 = RPL_ENDOFBANLIST + 368 = RPL_ENDOFBANLIST 369 = RPL_ENDOFWHOWAS 371 = RPL_INFO 372 = RPL_MOTD -- 2.20.1