]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Utils.hs
Merge branch 'master' into attoparsec
[Lucu.git] / Network / HTTP / Lucu / Utils.hs
index abd4556b64930789940b2f89da1e75e5fe6c7ca5..d2541691ced99dd41ac579d146224fa7657a8f7a 100644 (file)
@@ -67,11 +67,18 @@ quoteStr str = A.toAsciiBuilder "\"" ⊕
 --  > ==> [("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
+    | null src  = []
+    | otherwise = do pairStr ← splitBy (\ c → c ≡ ';' ∨ c ≡ '&') src
+                     let (key, value) = break ( '=') pairStr
+                     return ( unescape key
+                            , unescape $ case value of
+                                           ('=':val) → val
+                                           val       → val
                             )
+    where
+      unescape ∷ String → String
+      unescape = unEscapeString ∘ map plusToSpace
+
+      plusToSpace ∷ Char → Char
+      plusToSpace '+' = ' '
+      plusToSpace c   = c