JsonGrammar 0.2 → 0.3
raw patch · 2 files changed
+43/−26 lines, 2 filesdep +attoparsecdep +bytestringdep +time
Dependencies added: attoparsec, bytestring, time
Files
- JsonGrammar.cabal +4/−1
- Language/JsonGrammar.hs +39/−25
JsonGrammar.cabal view
@@ -1,5 +1,5 @@ Name: JsonGrammar-Version: 0.2+Version: 0.3 Synopsis: Combinators for bidirectional JSON parsing Description: Combinators for bidirectional JSON parsing @@ -31,7 +31,10 @@ semigroups >= 0.5 && < 0.6, template-haskell >= 2.4 && < 2.6, -- constraints copied from aeson-0.3.2.5:+ attoparsec >= 0.8.5.3,+ bytestring, text >= 0.11.0.2,+ time, vector >= 0.7 Source-Repository head
Language/JsonGrammar.hs view
@@ -14,24 +14,31 @@ ) where -import Data.Iso hiding (option)- import Prelude hiding (id, (.), head, maybe, either) -import Control.Category-import Control.Monad- import Data.Aeson hiding (object) import Data.Aeson.Types (parseMaybe)+import Data.Attoparsec.Number+import Data.ByteString (ByteString)+import qualified Data.ByteString.Lazy as Lazy+import Data.Int+import Data.IntSet+import Data.Iso hiding (option) import qualified Data.Map as M import Data.Maybe (fromMaybe) import Data.String import Data.Text (Text)+import qualified Data.Text.Lazy as Lazy+import Data.Time.Clock import qualified Data.Vector as V import qualified Data.Vector.Generic as VG import qualified Data.Vector.Fusion.Stream as VS+import Data.Word +import Control.Category+import Control.Monad + aeObject :: Iso (Object :- t) (Value :- t) aeArray :: Iso (Array :- t) (Value :- t) aeNull :: Iso t (Value :- t)@@ -148,32 +155,39 @@ instance Json a => Json [a] where grammar = list grammar -instance Json Bool where- grammar = liftAeson--instance Json Int where- grammar = liftAeson--instance Json Integer where- grammar = liftAeson--instance Json Float where- grammar = liftAeson--instance Json Double where- grammar = liftAeson--instance Json [Char] where- grammar = liftAeson- instance Json a => Json (Maybe a) where grammar = option grammar instance (Json a, Json b) => Json (Either a b) where grammar = either grammar grammar -instance Json Value where- grammar = id++instance Json Bool where grammar = liftAeson+instance Json Char where grammar = liftAeson+instance Json Double where grammar = liftAeson+instance Json Float where grammar = liftAeson+instance Json Int where grammar = liftAeson+instance Json Int8 where grammar = liftAeson+instance Json Int16 where grammar = liftAeson+instance Json Int32 where grammar = liftAeson+instance Json Int64 where grammar = liftAeson+instance Json Integer where grammar = liftAeson+instance Json Word where grammar = liftAeson+instance Json Word8 where grammar = liftAeson+instance Json Word16 where grammar = liftAeson+instance Json Word32 where grammar = liftAeson+instance Json Word64 where grammar = liftAeson+instance Json () where grammar = liftAeson+instance Json ByteString where grammar = liftAeson+instance Json Lazy.ByteString where grammar = liftAeson+instance Json Number where grammar = liftAeson+instance Json Text where grammar = liftAeson+instance Json Lazy.Text where grammar = liftAeson+instance Json IntSet where grammar = liftAeson+instance Json UTCTime where grammar = liftAeson+instance Json DotNetTime where grammar = liftAeson+instance Json Value where grammar = id+instance Json [Char] where grammar = liftAeson unsafeToJson :: Json a => String -> a -> Value unsafeToJson context value =