Fix mode command and hostnames ending with .
authorMart Lubbers <mart@martlubbers.net>
Wed, 12 Jul 2017 14:28:46 +0000 (16:28 +0200)
committerMart Lubbers <mart@martlubbers.net>
Wed, 12 Jul 2017 14:29:55 +0000 (16:29 +0200)
GenIRC.icl
IRC.icl

index 4a4d754..c813576 100644 (file)
@@ -26,7 +26,7 @@ gIRCParse{|EITHER|} lp rp as = case lp as of
        (Right a, rest) = (Right $ LEFT a, rest)
        (Left e1, _) = case rp as of
                (Right a, rest) = (Right $ RIGHT a, rest)
-               (Left e2, _) = (Left $ e1 +++ " and " +++ e2, [])
+               (Left e2, _) = (Left $ e2, [])
 gIRCParse{|OBJECT|} p as = appFst (fmap OBJECT) $ p as
 gIRCParse{|CONS of d|} p []
        = (Left $ concat ["Expected a cmd constructor: ", d.gcd_name], [])
diff --git a/IRC.icl b/IRC.icl
index 4a9fa95..0fb408f 100644 (file)
--- a/IRC.icl
+++ b/IRC.icl
@@ -41,7 +41,7 @@ where
                , parseIRCMessage ":cherryh.freenode.net ISON a b c d e f :g h\r\n"
                , 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 :: String -> Either [Error] IRCMessage
@@ -82,7 +82,8 @@ where
                >>= \cs->pure (toString [c:cs])
 
        parseHost :: Parser Char String
-       parseHost = jon "." <$> pSepBy parseName (pToken '.')
+       parseHost = jon "." <$> (pSepBy parseName (pToken '.'))
+               >>= \s->optional (pToken '.') >>= pure o maybe s (\p->s+++toString s)
                where
                        parseName :: Parser Char String
                        parseName = toString <$> pSome (pAlpha <|> pDigit <|> pOneOf ['-'])