From d1b0f20fbd85d85cee19347e7deda5e3a9251906 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Wed, 12 Jul 2017 16:28:46 +0200 Subject: [PATCH] Fix mode command and hostnames ending with . --- GenIRC.icl | 2 +- IRC.icl | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/GenIRC.icl b/GenIRC.icl index 4a4d754..c813576 100644 --- a/GenIRC.icl +++ b/GenIRC.icl @@ -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 --- 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 ['-']) -- 2.20.1