1
- module Data.FormURLEncoded
2
- ( FormURLEncoded (FormURLEncoded)
3
- , fromArray
4
- , toArray
5
- , encode
6
- ) where
1
+ module Data.FormURLEncoded where
2
+
3
+ import Prelude
7
4
8
- import Data.Newtype (class Newtype )
9
- import Data.Generic (class Generic )
10
5
import Data.Maybe (Maybe (..))
11
- import Data.Monoid (class Monoid )
12
- import Data.Semigroup (class Semigroup )
6
+ import Data.Newtype (class Newtype )
13
7
import Data.String (joinWith ) as String
14
8
import Data.Tuple (Tuple (..))
15
- import Global (encodeURIComponent )
16
- import Prelude (class Show , class Ord , class Eq , map , (<<<), (<>))
9
+ import Global.Unsafe (unsafeEncodeURIComponent )
17
10
18
11
-- | `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 )))
22
13
23
14
-- | Construct `FormURLEncoded` from an `Array` of key-value pairs.
24
15
fromArray :: Array (Tuple String (Maybe String )) -> FormURLEncoded
@@ -28,18 +19,19 @@ fromArray = FormURLEncoded
28
19
toArray :: FormURLEncoded -> Array (Tuple String (Maybe String ))
29
20
toArray (FormURLEncoded a) = a
30
21
31
- derive instance genericFormUrlEncoded :: Generic FormURLEncoded
32
22
derive instance newtypeFormUrlEncoded :: Newtype FormURLEncoded _
33
23
derive newtype instance eqFormUrlEncoded :: Eq FormURLEncoded
34
24
derive newtype instance ordFormUrlEncoded :: Ord FormURLEncoded
35
- derive newtype instance showFormUrlEncoded :: Show FormURLEncoded
36
25
derive newtype instance semigroupFormUrlEncoded :: Semigroup FormURLEncoded
37
26
derive newtype instance monoidFormUrlEncoded :: Monoid FormURLEncoded
38
27
28
+ instance showFormUrlEncoded :: Show FormURLEncoded where
29
+ show (FormURLEncoded kvs) = " (FormURLEncoded " <> show kvs <> " )"
30
+
39
31
-- | Encode `FormURLEncoded` as `application/x-www-form-urlencoded`.
40
32
encode :: FormURLEncoded -> String
41
33
encode = String .joinWith " &" <<< map encodePart <<< toArray
42
34
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