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)