2005-09-03 04:45:14 +00:00

34 lines
665 B
Haskell

module KeyValueParser where
import Text.ParserCombinators.Parsec
parseKeyValue = do
key <- parseKey
char '='
value <- parseValue
return (key, value)
parseKey = many1 letter
parseValue =
do
openQuote <- char '"' <|> char '\''
value <- many1 letter
char openQuote
return value
<|>
do
value <- many1 letter
return value
parseString s = do
case (parse parseKeyValue "" s) of
Left err -> return ("Error " ++ show err)
Right (key, value) -> return ("Key: " ++ key ++ ", Value: " ++ value)
resource :: String -> IO String
resource text = do
parsedText <- mapM parseString (lines text)
return (unlines parsedText)