@@ -6,11 +6,6 @@ module Data.Json.Extended
66 , integer
77 , decimal
88 , string
9- , timestamp
10- , date
11- , time
12- , interval
13- , objectId
149 , map
1510 , map'
1611 , array
@@ -21,7 +16,6 @@ module Data.Json.Extended
2116 , encodeEJson
2217
2318 , arbitraryEJsonOfSize
24- , arbitraryJsonEncodableEJsonOfSize
2519
2620 , getType
2721
@@ -30,27 +24,20 @@ module Data.Json.Extended
3024 , _Boolean
3125 , _Integer
3226 , _Decimal
33- , _Timestamp
34- , _Date
35- , _Time
36- , _Interval
37- , _ObjectId
3827 , _Array
3928 , _Map
4029 , _Map'
4130 ) where
4231
4332import Prelude hiding (map )
4433
45- import Data.Functor as F
46-
4734import Control.Lazy as Lazy
4835
4936import Data.Argonaut as JS
5037import Data.Array as A
5138import Data.Bitraversable (bitraverse )
52- import Data.DateTime as DT
5339import Data.Either as E
40+ import Data.Functor as F
5441import Data.Functor.Mu as Mu
5542import Data.HugeNum as HN
5643import Data.Json.Extended.Signature as Sig
@@ -61,56 +48,30 @@ import Data.Maybe as M
6148import Data.StrMap as SM
6249import Data.Traversable (for )
6350import Data.Tuple as T
51+ import Data.Json.Extended.Signature hiding (getType ) as Exports
6452
6553import Matryoshka (class Corecursive , class Recursive , anaM , cata , embed , project )
6654
67- import Test.StrongCheck.Arbitrary as SC
6855import Test.StrongCheck.Gen as Gen
6956import Text.Parsing.Parser as P
7057
71- import Data.Json.Extended.Signature hiding (getType ) as Exports
72-
7358type EJson = Mu.Mu Sig.EJsonF
7459
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
7661decodeEJson = anaM Sig .decodeJsonEJsonF
7762
78- encodeEJson :: forall t . Recursive t Sig.EJsonF ⇒ t -> JS.Json
63+ encodeEJson ∷ ∀ t . Recursive t Sig.EJsonF ⇒ t → JS.Json
7964encodeEJson = cata Sig .encodeJsonEJsonF
8065
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
10368
104- renderEJson ∷ EJson → String
105- renderEJson =
106- cata Sig .renderEJsonF
69+ renderEJson ∷ ∀ t . Recursive t Sig.EJsonF ⇒ t → String
70+ renderEJson = cata Sig .renderEJsonF
10771
108- -- | A closed parser of SQL^2 constant expressions
10972parseEJson ∷ ∀ m . Monad m ⇒ P.ParserT String m EJson
11073parseEJson =
111- Lazy .fix \f →
112- embed <$>
113- Sig .parseEJsonF f
74+ Lazy .fix \f → embed <$> Sig .parseEJsonF f
11475
11576null ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ t
11677null = embed Sig.Null
@@ -127,21 +88,6 @@ decimal = embed <<< Sig.Decimal
12788string ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ String → t
12889string = embed <<< Sig.String
12990
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-
14591array ∷ ∀ t . Corecursive t Sig.EJsonF ⇒ Array t → t
14692array = embed <<< Sig.Array
14793
@@ -181,31 +127,6 @@ _Decimal = prism' decimal $ project >>> case _ of
181127 Sig.Decimal d → M.Just d
182128 _ → M.Nothing
183129
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-
209130_Array ∷ ∀ t . (Corecursive t Sig.EJsonF , Recursive t Sig.EJsonF ) ⇒ Prism' t (Array t )
210131_Array = prism' array $ project >>> case _ of
211132 Sig.Array xs → M.Just xs
0 commit comments