-quoteStr :: String -> String
-quoteStr str = foldr (++) "" (["\""] ++ map quote str ++ ["\""])
- where
- quote :: Char -> String
- quote '"' = "\\\""
- quote c = [c]
\ No newline at end of file
+-- |> parseWWWFormURLEncoded "aaa=bbb&ccc=ddd"
+-- > ==> [("aaa", "bbb"), ("ccc", "ddd")]
+parseWWWFormURLEncoded ∷ String → [(String, String)]
+parseWWWFormURLEncoded src
+ | src == "" = []
+ | otherwise = do pairStr <- splitBy (\ c → c == ';' || c == '&') src
+ let (key, value) = break (== '=') pairStr
+ return ( unEscapeString key
+ , unEscapeString $ case value of
+ ('=':val) → val
+ val → val
+ )