jsonschema-gen 0.4.0.0 → 0.4.1.0
raw patch · 4 files changed
+26/−15 lines, 4 filesdep ~aesondep ~basedep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson, base, bytestring, containers, scientific, tagged, text, time, unordered-containers, vector
API changes (from Hackage documentation)
Files
- changelog.md +5/−0
- jsonschema-gen.cabal +2/−2
- src/Data/JSON/Schema/Generator/Convert.hs +9/−11
- tests/Main.hs +10/−2
changelog.md view
@@ -1,3 +1,8 @@+0.4.1.0++* Add support for `GHC 8.2.*`+* Add support for `aeson-1.2.*`+ 0.4.0.0 * Remove upper bound on depedencies.
jsonschema-gen.cabal view
@@ -1,5 +1,5 @@ name: jsonschema-gen-version: 0.4.0.0+version: 0.4.1.0 synopsis: JSON Schema generator from Algebraic data type description: This library contains a JSON Schema generator. homepage: https://github.com/yuga/jsonschema-gen@@ -25,7 +25,7 @@ Data.JSON.Schema.Generator.Generic Data.JSON.Schema.Generator.Types - build-depends: base >=4.6 && <4.10+ build-depends: base >=4.6 && <4.11 , bytestring >=0.10 , containers >=0.5 , tagged >=0.7
src/Data/JSON/Schema/Generator/Convert.hs view
@@ -146,8 +146,8 @@ jsOneOf _ _ = [] jsRequired :: A.Options -> Schema -> [(Text,A.Value)]-jsRequired A.Options {A.omitNothingFields = True} SCObject {scRequired = r } = [("required", array r)]-jsRequired opts@(A.Options {A.omitNothingFields = _ }) SCObject {scProperties = p} = [("required", array . map fst $ toMap opts p)]+jsRequired (A.omitNothingFields -> True) SCObject {scRequired = r } = [("required", array r)]+jsRequired opts@(A.omitNothingFields -> _ ) SCObject {scProperties = p} = [("required", array . map fst $ toMap opts p)] jsRequired _ _ = [] jsDefinitions :: A.Options -> Schema -> [(Text,A.Value)]@@ -199,7 +199,7 @@ consAsEnum s = error ("conAsEnum could not handle: " ++ show s) conAsObject :: A.Options -> SchemaChoice -> A.Value-conAsObject opts@(A.Options {A.sumEncoding = A.TwoElemArray}) sc =+conAsObject opts@(A.sumEncoding -> A.TwoElemArray) sc = object $ if sctTitle sc == "" then [] else [ ("title", string $ sctTitle sc) ] `mappend`@@ -219,12 +219,10 @@ ] conAsObject' :: A.Options -> SchemaChoice -> A.Value-conAsObject' opts@(A.Options {A.sumEncoding = A.TaggedObject tFld cFld}) sc = conAsTag opts (pack tFld) (pack cFld) sc-conAsObject' opts@(A.Options {A.sumEncoding = A.TwoElemArray }) sc = conAsArray opts sc-conAsObject' opts@(A.Options {A.sumEncoding = A.ObjectWithSingleField }) sc = conAsMap opts sc-#if MIN_VERSION_aeson(1,0,0)-conAsObject' _opts@(A.Options {A.sumEncoding = A.UntaggedValue }) _sc = error "Unsupported option"-#endif+conAsObject' opts@(A.sumEncoding -> A.TaggedObject tFld cFld) sc = conAsTag opts (pack tFld) (pack cFld) sc+conAsObject' opts@(A.sumEncoding -> A.TwoElemArray ) sc = conAsArray opts sc+conAsObject' opts@(A.sumEncoding -> A.ObjectWithSingleField ) sc = conAsMap opts sc+conAsObject' _opts {- @(A.sumEncoding -> A.UntaggedValue) -} _sc = error "Unsupported option" conAsTag :: A.Options -> Text -> Text -> SchemaChoice -> A.Value conAsTag opts tFld cFld (SCChoiceEnum tag _) = object [(tFld, object [("enum", array [tag])]), (cFld, conToArray opts [])]@@ -258,8 +256,8 @@ , ("additionalProperties", false) ] where- required A.Options {A.omitNothingFields = True} = array rq- required A.Options {A.omitNothingFields = _ } = array . map fst $ toMap opts mp+ required (A.omitNothingFields -> True) = array rq+ required (A.omitNothingFields -> _ ) = array . map fst $ toMap opts mp toMap :: A.Options -> [(Text,Schema)] -> [(Text,A.Value)] toMap opts mp = map (\(n,v) -> (n,convert' False opts v)) mp
tests/Main.hs view
@@ -115,10 +115,14 @@ -- optToStr :: String -> A.Options -> String-optToStr symbol A.Options { A.allNullaryToStringTag = a, A.omitNothingFields = b, A.sumEncoding = c } =+optToStr symbol aopts = "# " ++ symbol ++ " (allNullaryToStringTag: " ++ show a ++ ", omitNothingFields: " ++ show b ++ ", sumEncoding: " ++ showC c ++ ")"+ where+ a = A.allNullaryToStringTag aopts+ b = A.omitNothingFields aopts+ c = A.sumEncoding aopts showC :: A.SumEncoding -> String showC A.TwoElemArray = "array"@@ -178,8 +182,12 @@ where modName = moduleName (undefined :: D1 d f p) typName = datatypeName (undefined :: D1 d f p)- schemaSuffix opts A.Options { A.allNullaryToStringTag = a, A.omitNothingFields = b, A.sumEncoding = c } _ =+ schemaSuffix opts aopts _ = show a ++ "." ++ show b ++ "." ++ showC c ++ G.schemaIdSuffix opts+ where+ a = A.allNullaryToStringTag aopts+ b = A.omitNothingFields aopts+ c = A.sumEncoding aopts schemaOptions :: G.Options schemaOptions = G.defaultOptions