implementation module IRC
-import StdList, StdTuple, StdOverloaded, StdFunc, StdString, StdChar, StdBool
-import _SystemArray
-
-import GenPrint
-import GenIRC
+import StdEnv
import Control.Applicative
-import Control.Monad
+import Control.Monad => qualified join
import Data.Either
+import Data.Func
import Data.Maybe
-import Data.Tuple
+import Text
+import Text.GenPrint
import Text.Parsers.Simple.Chars
import Text.Parsers.Simple.Core
-import StdDebug
-
-from Data.Functor import <$>
-from Data.Func import $
-from StdMisc import undef, abort
-from Text import class Text(lpad,trim,rtrim,split,indexOf,concat),
- instance Text String
-import qualified Text
-
-jon :== 'Text'.join
+import GenIRC
derive gPrint IRCErrors, IRCReplies, Maybe, Either, IRCUser, IRCNumReply
, parseIRCMessage ":wilhelm.freenode.net 001 clooglebot :Welcome to the freenode Internet Relay Chat Network clooglebot\r\n"
, parseIRCMessage "PING :orwell.freenode.net\r\n"
, parseIRCMessage ":ChanServ!ChanServ@services. MODE #cloogle +o frobnicator\r\n"
+ , parseIRCMessage ":qbot_v01!~qbot@ip-213-124-170-20.ip.prioritytelecom.net PRIVMSG ##chinees :[link] Cloogle - https://cloogle.org"
]
parseIRCMessage :: String -> Either [Error] IRCMessage
parseNick :: Parser Char String
parseNick = pAlpha
- >>= \c ->pMany (pAlpha <|> pDigit <|> pOneOf (fromString "-[]\\`^{}"))
+ >>= \c ->pMany (pAlpha <|> pDigit <|> pOneOf (fromString "_-[]\\`^{}"))
>>= \cs->pure (toString [c:cs])
parseHost :: Parser Char String
- parseHost = jon "." <$> (pSepBy parseName (pToken '.'))
+ parseHost = join "." <$> (pSepBy parseName (pToken '.'))
>>= \s->optional (pToken '.') >>= pure o maybe s (\p->s+++toString s)
where
parseName :: Parser Char String
argfun [] = []
argfun [x:xs]
# x = trim x
- | x.[0] == ':' = [jon " " $ [x % (1, size x):map rtrim xs]]
+ | x.[0] == ':' = [join " " $ [x % (1, size x):map rtrim xs]]
| otherwise = [x:argfun xs]
//Reply
toString m = m.irc_nick <+ maybe "" ((<+) "!") m.irc_user
<+ maybe "" ((<+) "@") m.irc_host
instance toString IRCCommand where
- toString m = jon " " (gIRCPrint{|*|} m)
+ toString m = join " " (gIRCPrint{|*|} m) +++ "\r\n"
instance toString IRCReplies where toString r = printToString r
instance toString IRCErrors where toString r = printToString r