X-Git-Url: https://git.martlubbers.net/?p=cloogle-irc.git;a=blobdiff_plain;f=IRC.icl;h=098c7590de74ad4085685cffba7aae3becc350a6;hp=50a42e903fb2157b3a8c4ce5b3a37164fcb61497;hb=6fb569170aca43bf17a5e223544c0a5ef0b42fb6;hpb=87d709d61dae99cc468f52927e8246b3b6bc9022 diff --git a/IRC.icl b/IRC.icl index 50a42e9..098c759 100644 --- a/IRC.icl +++ b/IRC.icl @@ -1,13 +1,71 @@ implementation module IRC +import StdList import GenPrint import StdOverloaded import Data.Maybe +import Data.Either +import StdFunc +import StdString +from Text import class Text(..), instance Text String from StdMisc import undef -derive gPrint IRCCommands, IRCReplies, IRCErrors, (,), Maybe, () +derive gPrint IRCCommands, IRCReplies, IRCErrors, (,), Maybe, (), Either + +instance toString IRCCommands where + toString r = flip (+++) "\r\n" case r of + //ADMIN (Maybe String) + //AWAY String + //CONNECT String Int (Maybe String) + //DIE + //ERROR String + //INFO (Maybe String) + //INVITE String String + //ISON [String] + JOIN chs = "JOIN " +++ (if (isEmpty chs) "0" + (join ", " [join " " [ch:maybeToList mk]\\(ch, mk)<-chs])) + //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 n = join " " ["NICK", n] + //NJOIN + //NOTICE String String + //OPER String String + //PART [String] + //PASS String + PING a mb = join " " ["PING",a:maybeToList mb] + PONG a mb = join " " ["PONG",a:maybeToList mb] + PRIVMSG dest msg = join " " ["PRIVMSG", dest, ":"+++msg] + QUIT msg = join " " ["QUIT":maybeToList msg] + //REHASH + //RESTART + //SERVER + //SERVICE String String String String + //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 login mode rn = join " " ["USER", login, toString mode, "*", ":"+++rn] + //USERHOST [String] + //USERS (Maybe String) + //VERSION (Maybe String) + //WALLOPS String + //WHO (Maybe String) + //WHOIS (Maybe String) [String] + //WHOWAS (Maybe String) [String] + _ = printToString r + -instance toString IRCCommands where toString r = printToString r instance toString IRCReplies where toString r = printToString r instance toString IRCErrors where toString r = printToString r