1- module Data.FormURLEncoded
2- ( FormURLEncoded (FormURLEncoded)
3- , fromArray
4- , toArray
5- , encode
6- ) where
1+ module Data.FormURLEncoded where
2+
3+ import Prelude
74
8- import Data.Newtype (class Newtype )
9- import Data.Generic (class Generic )
105import Data.Maybe (Maybe (..))
11- import Data.Monoid (class Monoid )
12- import Data.Semigroup (class Semigroup )
6+ import Data.Newtype (class Newtype )
137import Data.String (joinWith ) as String
148import Data.Tuple (Tuple (..))
15- import Global (encodeURIComponent )
16- import Prelude (class Show , class Ord , class Eq , map , (<<<), (<>))
9+ import Global.Unsafe (unsafeEncodeURIComponent )
1710
1811-- | `FormURLEncoded` is an ordered list of key-value pairs with possible duplicates.
19- newtype FormURLEncoded
20- = FormURLEncoded
21- (Array (Tuple String (Maybe String )))
12+ newtype FormURLEncoded = FormURLEncoded (Array (Tuple String (Maybe String )))
2213
2314-- | Construct `FormURLEncoded` from an `Array` of key-value pairs.
2415fromArray :: Array (Tuple String (Maybe String )) -> FormURLEncoded
@@ -28,18 +19,19 @@ fromArray = FormURLEncoded
2819toArray :: FormURLEncoded -> Array (Tuple String (Maybe String ))
2920toArray (FormURLEncoded a) = a
3021
31- derive instance genericFormUrlEncoded :: Generic FormURLEncoded
3222derive instance newtypeFormUrlEncoded :: Newtype FormURLEncoded _
3323derive newtype instance eqFormUrlEncoded :: Eq FormURLEncoded
3424derive newtype instance ordFormUrlEncoded :: Ord FormURLEncoded
35- derive newtype instance showFormUrlEncoded :: Show FormURLEncoded
3625derive newtype instance semigroupFormUrlEncoded :: Semigroup FormURLEncoded
3726derive newtype instance monoidFormUrlEncoded :: Monoid FormURLEncoded
3827
28+ instance showFormUrlEncoded :: Show FormURLEncoded where
29+ show (FormURLEncoded kvs) = " (FormURLEncoded " <> show kvs <> " )"
30+
3931-- | Encode `FormURLEncoded` as `application/x-www-form-urlencoded`.
4032encode :: FormURLEncoded -> String
4133encode = String .joinWith " &" <<< map encodePart <<< toArray
4234 where
43- encodePart ( Tuple k Nothing ) = encodeURIComponent k
44- encodePart ( Tuple k ( Just v)) =
45- encodeURIComponent k <> " =" <> encodeURIComponent v
35+ encodePart = case _ of
36+ Tuple k Nothing -> unsafeEncodeURIComponent k
37+ Tuple k ( Just v) -> unsafeEncodeURIComponent k <> " =" <> unsafeEncodeURIComponent v
0 commit comments