- p = pSatisfy (const True)
- lst = fmap $ 'Text'.split ","
- opt = optional p
- pInt = toInt <$> p
-
- nn p f = pToken p >>| f
-
- cmdParser :: Parser String IRCCommand
- cmdParser =
- (nn "ADMIN" $ fmap ADMIN opt)
- <|> (nn "AWAY" $ fmap AWAY p)
- <|> (nn "CONNECT" $ liftM2 CONNECT p (optional $ liftM2 tuple pInt opt))
- <|> (nn "DIE" $ pure DIE)
- <|> (nn "ERROR" $ fmap ERROR p)
- <|> (nn "INFO" $ fmap INFO opt)
- <|> (nn "INVITE" $ liftM2 INVITE p p)
- <|> (nn "ISON" $ fmap ISON $ pMany p)
-// <|> (nn "JOIN" $ fmap JOIN $ lst p >>= \ch->lst p >>= \ks->pure (zip2 ch (ks ++ repeat Nothing)))
- <|> (nn "KICK" $ liftM3 KICK p p opt)
- <|> (nn "KILL" $ liftM2 KILL p p)
- <|> (nn "LINKS" $ fmap LINKS $ optional $ liftM2 tuple opt p)
- <|> (nn "LIST" $ fmap LIST $ optional $ liftM2 tuple ('Text'.split "," <$> p) opt)
- <|> (nn "LUSERS" $ fmap LUSERS $ optional $ liftM2 tuple p opt)
- <|> (nn "MODE" $ liftM5 MODE p p opt opt opt)
- <|> (nn "MOTD" $ fmap MOTD $ opt)
- <|> (nn "NAMES" $ fmap NAMES $ lst p)
- <|> (nn "NICK" $ fmap NAMES $ lst p)
- //"NICK" = String (Maybe String)
- //"NJOIN" = command0 NJOIN args
- //"NOTICE" = String String
- //"OPER" = String String
- //"PART" = [String]
- //"PASS" = String
- //"PING" = String (Maybe String)
- //"PONG" = String (Maybe String)
- //"PRIVMSG" = [String] String
-// "QUIT" = case args of
-// [_,_:_] = Left $ "QUIT has too many arguments"
-// x = Right $ QUIT $ listToMaybe x
-// "REHASH" = command0 REHASH args
-// "RESTART" = command0 REHASH args
-// "SERVER" = command0 REHASH args
- //"SERVICE" = String String String String
- //"SERVLIST" = (Maybe (String, Maybe String))
- //"SQUERY" = String String
-// "SQUIRT" = command0 REHASH args
- //"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" = String
- //"WHO" = (Maybe String)
- //"WHOIS" = (Maybe String) [String]
- //"WHOWAS" = (Maybe String) [String]