@@ -6,11 +6,6 @@ module Data.Json.Extended
6
6
, integer
7
7
, decimal
8
8
, string
9
- , timestamp
10
- , date
11
- , time
12
- , interval
13
- , objectId
14
9
, map
15
10
, map'
16
11
, array
@@ -21,7 +16,6 @@ module Data.Json.Extended
21
16
, encodeEJson
22
17
23
18
, arbitraryEJsonOfSize
24
- , arbitraryJsonEncodableEJsonOfSize
25
19
26
20
, getType
27
21
@@ -30,27 +24,20 @@ module Data.Json.Extended
30
24
, _Boolean
31
25
, _Integer
32
26
, _Decimal
33
- , _Timestamp
34
- , _Date
35
- , _Time
36
- , _Interval
37
- , _ObjectId
38
27
, _Array
39
28
, _Map
40
29
, _Map'
41
30
) where
42
31
43
32
import Prelude hiding (map )
44
33
45
- import Data.Functor as F
46
-
47
34
import Control.Lazy as Lazy
48
35
49
36
import Data.Argonaut as JS
50
37
import Data.Array as A
51
38
import Data.Bitraversable (bitraverse )
52
- import Data.DateTime as DT
53
39
import Data.Either as E
40
+ import Data.Functor as F
54
41
import Data.Functor.Mu as Mu
55
42
import Data.HugeNum as HN
56
43
import Data.Json.Extended.Signature as Sig
@@ -61,56 +48,30 @@ import Data.Maybe as M
61
48
import Data.StrMap as SM
62
49
import Data.Traversable (for )
63
50
import Data.Tuple as T
51
+ import Data.Json.Extended.Signature hiding (getType ) as Exports
64
52
65
53
import Matryoshka (class Corecursive , class Recursive , anaM , cata , embed , project )
66
54
67
- import Test.StrongCheck.Arbitrary as SC
68
55
import Test.StrongCheck.Gen as Gen
69
56
import Text.Parsing.Parser as P
70
57
71
- import Data.Json.Extended.Signature hiding (getType ) as Exports
72
-
73
58
type EJson = Mu.Mu Sig.EJsonF
74
59
75
- decodeEJson :: forall t . Corecursive t Sig.EJsonF ⇒ JS.Json → E.Either String t
60
+ decodeEJson ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ JS.Json → E.Either String t
76
61
decodeEJson = anaM Sig .decodeJsonEJsonF
77
62
78
- encodeEJson :: forall t . Recursive t Sig.EJsonF ⇒ t -> JS.Json
63
+ encodeEJson ∷ ∀ t . Recursive t Sig.EJsonF ⇒ t → JS.Json
79
64
encodeEJson = cata Sig .encodeJsonEJsonF
80
65
81
- arbitraryEJsonOfSize
82
- ∷ Gen.Size
83
- → Gen.Gen EJson
84
- arbitraryEJsonOfSize size =
85
- embed <$>
86
- case size of
87
- 0 → Sig .arbitraryBaseEJsonF
88
- n → Sig .arbitraryEJsonF $ arbitraryEJsonOfSize (n - 1 )
89
-
90
- -- | Generate only JSON-encodable objects
91
- arbitraryJsonEncodableEJsonOfSize
92
- ∷ Gen.Size
93
- → Gen.Gen EJson
94
- arbitraryJsonEncodableEJsonOfSize size =
95
- embed <$>
96
- case size of
97
- 0 → Sig .arbitraryBaseEJsonF
98
- n → Sig .arbitraryEJsonFWithKeyGen keyGen $ arbitraryJsonEncodableEJsonOfSize (n - 1 )
99
- where
100
- keyGen =
101
- embed <<< Sig.String <$>
102
- SC .arbitrary
66
+ arbitraryEJsonOfSize ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ Gen.Size → Gen.Gen t
67
+ arbitraryEJsonOfSize = anaM Sig .arbitraryEJsonF
103
68
104
- renderEJson ∷ EJson → String
105
- renderEJson =
106
- cata Sig .renderEJsonF
69
+ renderEJson ∷ ∀ t . Recursive t Sig.EJsonF ⇒ t → String
70
+ renderEJson = cata Sig .renderEJsonF
107
71
108
- -- | A closed parser of SQL^2 constant expressions
109
72
parseEJson ∷ ∀ m . Monad m ⇒ P.ParserT String m EJson
110
73
parseEJson =
111
- Lazy .fix \f →
112
- embed <$>
113
- Sig .parseEJsonF f
74
+ Lazy .fix \f → embed <$> Sig .parseEJsonF f
114
75
115
76
null ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ t
116
77
null = embed Sig.Null
@@ -127,21 +88,6 @@ decimal = embed <<< Sig.Decimal
127
88
string ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ String → t
128
89
string = embed <<< Sig.String
129
90
130
- timestamp ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ DT.DateTime → t
131
- timestamp = embed <<< Sig.Timestamp
132
-
133
- date ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ DT.Date → t
134
- date = embed <<< Sig.Date
135
-
136
- time ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ DT.Time → t
137
- time = embed <<< Sig.Time
138
-
139
- interval ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ String → t
140
- interval = embed <<< Sig.Interval
141
-
142
- objectId ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ String → t
143
- objectId = embed <<< Sig.ObjectId
144
-
145
91
array ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ Array t → t
146
92
array = embed <<< Sig.Array
147
93
@@ -181,31 +127,6 @@ _Decimal = prism' decimal $ project >>> case _ of
181
127
Sig.Decimal d → M.Just d
182
128
_ → M.Nothing
183
129
184
- _Timestamp ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t DT.DateTime
185
- _Timestamp = prism' timestamp $ project >>> case _ of
186
- Sig.Timestamp t → M.Just t
187
- _ → M.Nothing
188
-
189
- _Date ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t DT.Date
190
- _Date = prism' date $ project >>> case _ of
191
- Sig.Date d → M.Just d
192
- _ → M.Nothing
193
-
194
- _Time ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t DT.Time
195
- _Time = prism' time $ project >>> case _ of
196
- Sig.Time t → M.Just t
197
- _ → M.Nothing
198
-
199
- _Interval ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t String
200
- _Interval = prism' interval $ project >>> case _ of
201
- Sig.Interval i → M.Just i
202
- _ → M.Nothing
203
-
204
- _ObjectId ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t String
205
- _ObjectId = prism' objectId $ project >>> case _ of
206
- Sig.ObjectId id → M.Just id
207
- _ → M.Nothing
208
-
209
130
_Array ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t (Array t )
210
131
_Array = prism' array $ project >>> case _ of
211
132
Sig.Array xs → M.Just xs
0 commit comments