- command0 :: IRCCommand [String] -> Either Error IRCCommand
- command0 c [] = Right c
- command0 c x = Left $ toString c +++ " doesn't have arguments"
-
- processParse :: [String] -> Either Error IRCCommand
- processParse [] = Left "Empty list of arguments"
- processParse [cmd:args] = case cmd of
- //"ADMIN" = (Maybe String)
- //"AWAY" = String
- //"CONNECT" = String (Maybe (Int, Maybe String))
- "DIE" = command0 DIE args
- //"ERROR" = String
- //"INFO" = (Maybe String)
- //"INVITE" = String String
- //"ISON" = [String]
- //"JOIN" = [(String, Maybe String)]
- //"KICK" = String String (Maybe String)
- //"KILL" = String String
- //"LINKS" = (Maybe (Maybe String, String))
- //"LIST" = (Maybe ([String], Maybe String))
- //"LUSERS" = (Maybe (String, Maybe String))
- //"MODE" = String String (Maybe String) (Maybe String) (Maybe String)
- //"MOTD" = (Maybe String)
- //"NAMES" = [String]
- //"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]
- _ = Left $ "Unknown command: " +++ cmd
-
-parsePrefix :: Parser Char (Maybe (Either String IRCUser))
-parsePrefix = optional (parseEither parseHost parseUser) <* spaceParser