jsonifier 0.1.1 → 0.1.2
raw patch · 3 files changed
+17/−7 lines, 3 filesdep ~aeson
Dependency ranges changed: aeson
Files
- jsonifier.cabal +3/−3
- library/Jsonifier.hs +9/−0
- test/Main.hs +5/−4
jsonifier.cabal view
@@ -1,5 +1,5 @@ name: jsonifier-version: 0.1.1+version: 0.1.2 synopsis: Fast and simple JSON encoding toolkit description: Minimalistic library for encoding JSON directly to strict bytestring,@@ -64,7 +64,7 @@ other-modules: Main.Util.HedgehogGens build-depends:- aeson >=1.4.7.1 && <2,+ aeson >=2 && <3, hedgehog >=1.0.3 && <2, jsonifier, numeric-limits >=0.1 && <0.2,@@ -83,7 +83,7 @@ default-extensions: BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, InstanceSigs, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, StrictData, TemplateHaskell, TupleSections, TypeApplications, TypeFamilies, TypeOperators, UnboxedTuples, ViewPatterns default-language: Haskell2010 build-depends:- aeson >=1.5.4.1 && <1.6,+ aeson >=2 && <3, buffer-builder >=0.2.4.7 && <0.3, gauge >=0.2.5 && <0.3, jsonifier,
library/Jsonifier.hs view
@@ -6,6 +6,7 @@ ( -- * ByteString toByteString,+ toWrite, -- * Json Json, -- ** Primitives@@ -46,6 +47,14 @@ toByteString :: Json -> ByteString toByteString = Write.writeToByteString . coerce++{-|+Render a JSON value into Write.+-}+{-# INLINE toWrite #-}+toWrite :: Json -> Write+toWrite =+ coerce -- * Json
test/Main.hs view
@@ -5,7 +5,8 @@ import Hedgehog.Main import qualified Data.Aeson as A import qualified Jsonifier as J-import qualified Data.HashMap.Strict as HashMap+import qualified Data.Aeson.Key as AesonKey+import qualified Data.Aeson.KeyMap as AesonKeyMap import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range import qualified Data.ByteString.Char8 as Char8ByteString@@ -40,7 +41,7 @@ A.Array a -> J.array (fmap aesonJson a) A.Object a ->- J.object (HashMap.foldMapWithKey (\ k -> (: []) . (,) k . aesonJson) a)+ J.object (AesonKeyMap.foldMapWithKey (\ k -> (: []) . (,) (AesonKey.toText k) . aesonJson) a) prop_aesonRoundtrip = withTests 9999 $@@ -142,7 +143,7 @@ ScientificStringSample a -> A.String (fromString (show a)) TextStringSample a -> A.String a ArraySample a -> A.Array (fromList (fmap sample a))- ObjectSample a -> A.Object (fromList (fmap (fmap sample) a))+ ObjectSample a -> A.Object (AesonKeyMap.fromList (fmap (bimap AesonKey.fromText sample) a)) where realNumber a = A.Number $@@ -204,7 +205,7 @@ \ case A.Object b -> a & foldMap (\ (ak, av) ->- case HashMap.lookup ak b of+ case AesonKeyMap.lookup (AesonKey.fromText ak) b of Just bv -> fmap First (detectMismatchInSampleAndAeson av bv) Nothing -> Just (First (ObjectSample a, A.Object b)) )