From 796d67c238deaa23fcc08d116d16193c8c6e014f Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Fri, 12 Feb 2010 14:23:09 +0100 Subject: correctly parse static position in config Ignore-this: c998e16a07bc65f0543ab26c5b155cb5e2b8f536 darcs-hash:20100212132309-d6583-a388b6542ece14051c94b76f8e0b821fef51ee18.gz --- Parsers.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Parsers.hs b/Parsers.hs index b969c8b..88b25f1 100644 --- a/Parsers.hs +++ b/Parsers.hs @@ -147,7 +147,14 @@ parseConfig = runParser parseConf fields "Config" . stripComments pLowerOnStart = field lowerOnStart "lowerOnStart" $ tillFieldEnd >>= read' "lowerOnStart" pCommands = field commands "commands" $ readCommands - tillFieldEnd = many $ noneOf ",}\n\r" + staticPos = do string "Static" + wrapSkip (string "{") + p <- many (noneOf "}") + wrapSkip (string "}") + string "," + return ("Static {" ++ p ++ "}") + tillFieldEnd = staticPos <|> many (noneOf ",}\n\r") + commandsEnd = wrapSkip (string "]") >> oneOf "}," readCommands = manyTill anyChar (try commandsEnd) >>= read' commandsErr . flip (++) "]" @@ -164,7 +171,7 @@ parseConfig = runParser parseConf fields "Config" . stripComments read' d s = case reads s of [(x, _)] -> return x - _ -> fail $ "error reading field: " ++ d + _ -> fail $ "error reading the " ++ d ++ " field: " ++ s commandsErr :: String commandsErr = "commands: this usually means that a command could not be parsed.\n" ++ -- cgit v1.2.3