File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed
Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ module Json
4040 , text
4141 , shortText
4242 -- * Object Construction
43+ , objectFromList
4344 , object1
4445 , object2
4546 , object3
@@ -453,6 +454,10 @@ w16ToChar (GHC.Word.Compat.W16# w) = C# (chr# (word2Int# w))
453454pattern (:->) :: ShortText -> Value -> Member
454455pattern key :-> value = Member {key,value}
455456
457+ -- | Construct a JSON object from a list of members.
458+ objectFromList :: [Member ] -> Value
459+ objectFromList ms = Object $ PM. smallArrayFromList ms
460+
456461-- | Construct a JSON object with one member.
457462object1 :: Member -> Value
458463{-# inline object1 #-}
Original file line number Diff line number Diff line change @@ -123,6 +123,26 @@ tests = testGroup "Tests"
123123 @=?
124124 BChunks. concat (Builder. run 4 (J. encode (J. String " It\2019s over now" )))
125125 ]
126+ , testGroup " objectFromList"
127+ [ THU. testCase " empty object" $
128+ J. objectFromList []
129+ @=?
130+ J. emptyObject
131+ , THU. testCase " one member" $
132+ J. objectFromList [J. Member {J. key = " one" , J. value = J. String " value1" }]
133+ @=?
134+ J. object1 J. Member {J. key = " one" , J. value = J. String " value1" }
135+ , THU. testCase " two members" $ do
136+ let members = [
137+ J. Member {J. key = " 1" , J. value = J. String " 1" },
138+ J. Member {J. key = " 2" , J. value = J. String " 2" }
139+ ]
140+ J. objectFromList members
141+ @=?
142+ J. object2
143+ J. Member {J. key = " 1" , J. value = J. String " 1" }
144+ J. Member {J. key = " 2" , J. value = J. String " 2" }
145+ ]
126146 , testGroup " smile-fragment"
127147 [ THU. testCase " biginteger-65535" $
128148 let enc = BChunks. concat (Builder. run 128 (Smile. encodeBigInteger 65535 ))
You can’t perform that action at this time.
0 commit comments