packages feed

JsonGrammar 0.3.4 → 0.3.5

raw patch · 3 files changed

+64/−7 lines, 3 filesdep +HUnitdep +JsonGrammardep +test-frameworkdep ~aesonPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: HUnit, JsonGrammar, test-framework, test-framework-hunit

Dependency ranges changed: aeson

API changes (from Hackage documentation)

- Language.JsonGrammar: instance [overlap ok] Json ByteString

Files

JsonGrammar.cabal view
@@ -1,5 +1,5 @@ Name:           JsonGrammar-Version:        0.3.4+Version:        0.3.5 Synopsis:       Combinators for bidirectional JSON parsing Description:   	Combinators for bidirectional JSON parsing @@ -12,7 +12,7 @@ Bug-reports:    https://github.com/MedeaMelana/JsonGrammar/issues  -Cabal-Version:  >= 1.6+Cabal-Version:  >= 1.8 License:        BSD3 License-file:   LICENSE Category:       JSON, Language@@ -26,7 +26,7 @@                     Data.Iso.Common,                     Language.JsonGrammar   Build-Depends:    base >= 3.0 && < 5,-                    aeson >= 0.6 && < 0.7,+                    aeson >= 0.6 && < 0.8,                     semigroups >= 0.5 && < 0.9,                     -- constraints copied from aeson-0.6.1.0:                     attoparsec >= 0.8.6.1,@@ -42,3 +42,15 @@ Source-Repository head   Type:         git   Location:     https://github.com/MedeaMelana/JsonGrammar+++Test-Suite tests+  Type: exitcode-stdio-1.0+  Hs-Source-Dirs: tests+  Main-Is: Tests.hs+  Build-Depends:    JsonGrammar,+                    base >= 3.0 && < 5,+                    aeson >= 0.6 && < 0.8,+                    test-framework,+                    test-framework-hunit,+                    HUnit
Language/JsonGrammar.hs view
@@ -19,8 +19,6 @@ 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.Hashable (Hashable) import Data.Int import Data.IntSet (IntSet)@@ -182,8 +180,6 @@ 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
+ tests/Tests.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE NoMonoPatBinds #-}++import Types++import Data.Iso+import Language.JsonGrammar++import Prelude hiding (id, (.), head, either)+import Control.Category++import Data.Aeson (Object)+import Test.Framework (Test, defaultMain)+import Test.Framework.Providers.HUnit (testCase)+import Test.HUnit (assertEqual)+++person         = $(deriveIsos ''Person)+(male, female) = $(deriveIsos ''Gender)+coords         = $(deriveIsos ''Coords)+++instance Json Person where+  grammar = person . object+    ( prop "naam"+    . prop "geslacht"+    . prop "leeftijd"+    . coordsProps+    )++instance Json Gender where+  grammar = male   . litJson "man"+         <> female . litJson "vrouw"++coordsProps :: Iso (Object :- t) (Object :- Coords :- t)+coordsProps = duck coords . prop "lat" . prop "lng"++anna :: Person+anna = Person "Anna" Female 36 (Coords 53.0163038 5.1993053)++main :: IO ()+main = defaultMain [personTest]++personTest :: Test+personTest = testCase "Person" (assertEqual "" anna anna')+  where+    Just anna' = fromJson annaJson+    Just annaJson = toJson anna