34 lines
665 B
Haskell
Raw Permalink Normal View History

2005-04-24 08:51:33 +00:00
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)