aeson-schemas 1.0.1 → 1.0.2
raw patch · 70 files changed
+216/−2 lines, 70 filesdep ~first-class-familiesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: first-class-families
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- aeson-schemas.cabal +70/−2
- test/all_types.json +36/−0
- test/goldens/README_Quickstart.golden +17/−0
- test/goldens/bool.golden +1/−0
- test/goldens/bool_int_double.golden +1/−0
- test/goldens/double.golden +1/−0
- test/goldens/enum.golden +1/−0
- test/goldens/from_object_all_types.golden +1/−0
- test/goldens/from_object_namespaced.golden +1/−0
- test/goldens/from_object_nested.golden +1/−0
- test/goldens/get_empty.golden +6/−0
- test/goldens/get_just_start.golden +6/−0
- test/goldens/get_ops_after_list.golden +1/−0
- test/goldens/get_ops_after_tuple.golden +1/−0
- test/goldens/getter_all_types_list.golden +1/−0
- test/goldens/getter_all_types_list_item.golden +1/−0
- test/goldens/int.golden +1/−0
- test/goldens/int_int2.golden +1/−0
- test/goldens/lambda_bool.golden +1/−0
- test/goldens/list.golden +1/−0
- test/goldens/list_explicit.golden +1/−0
- test/goldens/list_maybeBool.golden +1/−0
- test/goldens/list_maybeInt.golden +1/−0
- test/goldens/list_type.golden +1/−0
- test/goldens/maybeList.golden +1/−0
- test/goldens/maybeListNull.golden +1/−0
- test/goldens/maybeListNull_bang.golden +1/−0
- test/goldens/maybeListNull_list.golden +1/−0
- test/goldens/maybeListNull_list_text.golden +1/−0
- test/goldens/maybeList_bang.golden +1/−0
- test/goldens/maybeList_bang_list.golden +1/−0
- test/goldens/maybeList_bang_list_text.golden +1/−0
- test/goldens/maybeList_list.golden +1/−0
- test/goldens/maybeList_list_text.golden +1/−0
- test/goldens/maybeObj.golden +1/−0
- test/goldens/maybeObjNull.golden +1/−0
- test/goldens/maybeObjNull_text.golden +1/−0
- test/goldens/maybeObj_bang.golden +1/−0
- test/goldens/maybeObj_bang_text.golden +1/−0
- test/goldens/maybeObj_text.golden +1/−0
- test/goldens/nonexistent.golden +1/−0
- test/goldens/scalar.golden +1/−0
- test/goldens/schema_def_bool.golden +1/−0
- test/goldens/schema_def_custom.golden +1/−0
- test/goldens/schema_def_double.golden +1/−0
- test/goldens/schema_def_duplicate.golden +1/−0
- test/goldens/schema_def_duplicate_extend.golden +1/−0
- test/goldens/schema_def_extend.golden +1/−0
- test/goldens/schema_def_import_user.golden +1/−0
- test/goldens/schema_def_int.golden +1/−0
- test/goldens/schema_def_invalid_extend.golden +1/−0
- test/goldens/schema_def_list.golden +1/−0
- test/goldens/schema_def_list_obj.golden +1/−0
- test/goldens/schema_def_maybe.golden +1/−0
- test/goldens/schema_def_maybe_obj.golden +1/−0
- test/goldens/schema_def_not_object.golden +1/−0
- test/goldens/schema_def_obj.golden +1/−0
- test/goldens/schema_def_shadow.golden +1/−0
- test/goldens/schema_def_text.golden +1/−0
- test/goldens/schema_def_unknown_type.golden +1/−0
- test/goldens/text.golden +1/−0
- test/goldens/unwrap_schema.golden +1/−0
- test/goldens/unwrap_schema_bad_bang.golden +1/−0
- test/goldens/unwrap_schema_bad_key.golden +1/−0
- test/goldens/unwrap_schema_bad_list.golden +1/−0
- test/goldens/unwrap_schema_bad_question.golden +1/−0
- test/goldens/unwrap_schema_nested_list.golden +1/−0
- test/goldens/unwrap_schema_nested_object.golden +1/−0
- test/nested.json +14/−0
CHANGELOG.md view
@@ -1,5 +1,9 @@ ## Upcoming +## 1.0.2++Bundle test data files in release tarball+ ## 1.0.1 Add support with `first-class-families-0.6.0.0`
aeson-schemas.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 268ce311efa5b339b40dbab7b1b84b4d779ec54bbeda8756b9de810c636745fb+-- hash: 492943d0169b4a3f5457ebaf335ee3b3630cfbfa520d699dd098450a55875d1a name: aeson-schemas-version: 1.0.1+version: 1.0.2 synopsis: Easily consume JSON data on-demand with type-safety description: Parse JSON data easily and safely without defining new data types. Useful for deeply nested JSON data, which is difficult to parse using the default@@ -23,6 +23,74 @@ extra-source-files: README.md CHANGELOG.md+ test/all_types.json+ test/nested.json+ test/goldens/bool.golden+ test/goldens/bool_int_double.golden+ test/goldens/double.golden+ test/goldens/enum.golden+ test/goldens/from_object_all_types.golden+ test/goldens/from_object_namespaced.golden+ test/goldens/from_object_nested.golden+ test/goldens/get_empty.golden+ test/goldens/get_just_start.golden+ test/goldens/get_ops_after_list.golden+ test/goldens/get_ops_after_tuple.golden+ test/goldens/getter_all_types_list.golden+ test/goldens/getter_all_types_list_item.golden+ test/goldens/int.golden+ test/goldens/int_int2.golden+ test/goldens/lambda_bool.golden+ test/goldens/list.golden+ test/goldens/list_explicit.golden+ test/goldens/list_maybeBool.golden+ test/goldens/list_maybeInt.golden+ test/goldens/list_type.golden+ test/goldens/maybeList.golden+ test/goldens/maybeList_bang.golden+ test/goldens/maybeList_bang_list.golden+ test/goldens/maybeList_bang_list_text.golden+ test/goldens/maybeList_list.golden+ test/goldens/maybeList_list_text.golden+ test/goldens/maybeListNull.golden+ test/goldens/maybeListNull_bang.golden+ test/goldens/maybeListNull_list.golden+ test/goldens/maybeListNull_list_text.golden+ test/goldens/maybeObj.golden+ test/goldens/maybeObj_bang.golden+ test/goldens/maybeObj_bang_text.golden+ test/goldens/maybeObj_text.golden+ test/goldens/maybeObjNull.golden+ test/goldens/maybeObjNull_text.golden+ test/goldens/nonexistent.golden+ test/goldens/README_Quickstart.golden+ test/goldens/scalar.golden+ test/goldens/schema_def_bool.golden+ test/goldens/schema_def_custom.golden+ test/goldens/schema_def_double.golden+ test/goldens/schema_def_duplicate.golden+ test/goldens/schema_def_duplicate_extend.golden+ test/goldens/schema_def_extend.golden+ test/goldens/schema_def_import_user.golden+ test/goldens/schema_def_int.golden+ test/goldens/schema_def_invalid_extend.golden+ test/goldens/schema_def_list.golden+ test/goldens/schema_def_list_obj.golden+ test/goldens/schema_def_maybe.golden+ test/goldens/schema_def_maybe_obj.golden+ test/goldens/schema_def_not_object.golden+ test/goldens/schema_def_obj.golden+ test/goldens/schema_def_shadow.golden+ test/goldens/schema_def_text.golden+ test/goldens/schema_def_unknown_type.golden+ test/goldens/text.golden+ test/goldens/unwrap_schema.golden+ test/goldens/unwrap_schema_bad_bang.golden+ test/goldens/unwrap_schema_bad_key.golden+ test/goldens/unwrap_schema_bad_list.golden+ test/goldens/unwrap_schema_bad_question.golden+ test/goldens/unwrap_schema_nested_list.golden+ test/goldens/unwrap_schema_nested_object.golden source-repository head type: git
+ test/all_types.json view
@@ -0,0 +1,36 @@+{+ "bool": true,+ "int": 1,+ "int2": 2,+ "double": 2.5,+ "text": "asdf",+ "scalar": "12,34",+ "enum": "HELLO",+ "maybeObject": {+ "text": "foo"+ },+ "maybeObjectNull": null,+ "maybeList": [+ {+ "text": "foo"+ },+ {+ "text": "bar"+ }+ ],+ "maybeListNull": null,+ "list": [+ {+ "type": "bool",+ "maybeBool": true+ },+ {+ "type": "int",+ "maybeInt": 2+ },+ {+ "type": "null",+ "maybeNull": null+ }+ ]+}
+ test/goldens/README_Quickstart.golden view
@@ -0,0 +1,17 @@+[1,2,3,4]+Details for user #1:+* Name: Alice+* Age: 30+* Groups: [{"id": 1, "name": "admin"}]+Details for user #2:+* Name: Bob+* Age: N/A+* No groups+Details for user #3:+* Name: Charlie+* Age: 25+* Groups: []+Details for user #4:+* Name: Darlene+* Age: 40+* Groups: [{"id": 2, "name": "groupA"},{"id": 3, "name": "groupB"}]
+ test/goldens/bool.golden view
@@ -0,0 +1,1 @@+True
+ test/goldens/bool_int_double.golden view
@@ -0,0 +1,1 @@+(True,1,2.5)
+ test/goldens/double.golden view
@@ -0,0 +1,1 @@+2.5
+ test/goldens/enum.golden view
@@ -0,0 +1,1 @@+HELLO
+ test/goldens/from_object_all_types.golden view
@@ -0,0 +1,1 @@+["True","2","Nothing"]
+ test/goldens/from_object_namespaced.golden view
@@ -0,0 +1,1 @@+["bool","int","null","1","3"]
+ test/goldens/from_object_nested.golden view
@@ -0,0 +1,1 @@+[1,2]
+ test/goldens/get_empty.golden view
@@ -0,0 +1,6 @@+1:1:+ |+1 | <empty line>+ | ^+unexpected end of input+expecting "[]", '!', '(', '.', '?', '[', lowercase letter, or white space
+ test/goldens/get_just_start.golden view
@@ -0,0 +1,6 @@+allTypes:1:9:+ |+1 | allTypes+ | ^+unexpected end of input+expecting "[]", '!', ''', '(', '.', '?', '[', or alphanumeric character
+ test/goldens/get_ops_after_list.golden view
@@ -0,0 +1,1 @@+.[*] operation MUST be last.
+ test/goldens/get_ops_after_tuple.golden view
@@ -0,0 +1,1 @@+.(*) operation MUST be last.
+ test/goldens/getter_all_types_list.golden view
@@ -0,0 +1,1 @@+[{"type": "bool", "maybeBool": Just True, "maybeInt": Nothing, "maybeNull": Nothing},{"type": "int", "maybeBool": Nothing, "maybeInt": Just 2, "maybeNull": Nothing},{"type": "null", "maybeBool": Nothing, "maybeInt": Nothing, "maybeNull": Nothing}]
+ test/goldens/getter_all_types_list_item.golden view
@@ -0,0 +1,1 @@+["bool","int","null"]
+ test/goldens/int.golden view
@@ -0,0 +1,1 @@+1
+ test/goldens/int_int2.golden view
@@ -0,0 +1,1 @@+[1,2]
+ test/goldens/lambda_bool.golden view
@@ -0,0 +1,1 @@+True
+ test/goldens/list.golden view
@@ -0,0 +1,1 @@+[{"type": "bool", "maybeBool": Just True, "maybeInt": Nothing, "maybeNull": Nothing},{"type": "int", "maybeBool": Nothing, "maybeInt": Just 2, "maybeNull": Nothing},{"type": "null", "maybeBool": Nothing, "maybeInt": Nothing, "maybeNull": Nothing}]
+ test/goldens/list_explicit.golden view
@@ -0,0 +1,1 @@+[{"type": "bool", "maybeBool": Just True, "maybeInt": Nothing, "maybeNull": Nothing},{"type": "int", "maybeBool": Nothing, "maybeInt": Just 2, "maybeNull": Nothing},{"type": "null", "maybeBool": Nothing, "maybeInt": Nothing, "maybeNull": Nothing}]
+ test/goldens/list_maybeBool.golden view
@@ -0,0 +1,1 @@+[Just True,Nothing,Nothing]
+ test/goldens/list_maybeInt.golden view
@@ -0,0 +1,1 @@+[Nothing,Just 2,Nothing]
+ test/goldens/list_type.golden view
@@ -0,0 +1,1 @@+["bool","int","null"]
+ test/goldens/maybeList.golden view
@@ -0,0 +1,1 @@+Just [{"text": "foo"},{"text": "bar"}]
+ test/goldens/maybeListNull.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/maybeListNull_bang.golden view
@@ -0,0 +1,1 @@+Called 'fromJust' on null expression: (AllTypes.result).maybeListNull
+ test/goldens/maybeListNull_list.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/maybeListNull_list_text.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/maybeList_bang.golden view
@@ -0,0 +1,1 @@+[{"text": "foo"},{"text": "bar"}]
+ test/goldens/maybeList_bang_list.golden view
@@ -0,0 +1,1 @@+[{"text": "foo"},{"text": "bar"}]
+ test/goldens/maybeList_bang_list_text.golden view
@@ -0,0 +1,1 @@+["foo","bar"]
+ test/goldens/maybeList_list.golden view
@@ -0,0 +1,1 @@+Just [{"text": "foo"},{"text": "bar"}]
+ test/goldens/maybeList_list_text.golden view
@@ -0,0 +1,1 @@+Just ["foo","bar"]
+ test/goldens/maybeObj.golden view
@@ -0,0 +1,1 @@+Just {"text": "foo"}
+ test/goldens/maybeObjNull.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/maybeObjNull_text.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/maybeObj_bang.golden view
@@ -0,0 +1,1 @@+{"text": "foo"}
+ test/goldens/maybeObj_bang_text.golden view
@@ -0,0 +1,1 @@+"foo"
+ test/goldens/maybeObj_text.golden view
@@ -0,0 +1,1 @@+Just "foo"
+ test/goldens/nonexistent.golden view
@@ -0,0 +1,1 @@+Nothing
+ test/goldens/scalar.golden view
@@ -0,0 +1,1 @@+Coordinate (12,34)
+ test/goldens/schema_def_bool.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": Bool}
+ test/goldens/schema_def_custom.golden view
@@ -0,0 +1,1 @@+SchemaObject {"status": Status}
+ test/goldens/schema_def_double.golden view
@@ -0,0 +1,1 @@+SchemaObject {"foo123": Double}
+ test/goldens/schema_def_duplicate.golden view
@@ -0,0 +1,1 @@+Key 'a' specified multiple times
+ test/goldens/schema_def_duplicate_extend.golden view
@@ -0,0 +1,1 @@+Key 'extra' declared in multiple imported schemas
+ test/goldens/schema_def_extend.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": Int, "extra": Text}
+ test/goldens/schema_def_import_user.golden view
@@ -0,0 +1,1 @@+SchemaObject {"user": {"name": Text}}
+ test/goldens/schema_def_int.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": Int}
+ test/goldens/schema_def_invalid_extend.golden view
@@ -0,0 +1,1 @@+'GHC.Types.Int' is not a SchemaObject
+ test/goldens/schema_def_list.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": List Int}
+ test/goldens/schema_def_list_obj.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": List {"b": Int}}
+ test/goldens/schema_def_maybe.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": Maybe Int}
+ test/goldens/schema_def_maybe_obj.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": Maybe {"b": Int}}
+ test/goldens/schema_def_not_object.golden view
@@ -0,0 +1,1 @@+`schema` definition must be an object
+ test/goldens/schema_def_obj.golden view
@@ -0,0 +1,1 @@+SchemaObject {"a": {"b": Int}}
+ test/goldens/schema_def_shadow.golden view
@@ -0,0 +1,1 @@+SchemaObject {"extra": Bool}
+ test/goldens/schema_def_text.golden view
@@ -0,0 +1,1 @@+SchemaObject {"some_text": Text}
+ test/goldens/schema_def_unknown_type.golden view
@@ -0,0 +1,1 @@+`schema` definition must be an object
+ test/goldens/text.golden view
@@ -0,0 +1,1 @@+"asdf"
+ test/goldens/unwrap_schema.golden view
@@ -0,0 +1,1 @@+Object (SchemaObject {"a": Maybe {"b": Int}, "b": Int})
+ test/goldens/unwrap_schema_bad_bang.golden view
@@ -0,0 +1,1 @@+Cannot use `!` operator on schema: SchemaObject {"type": Text, "maybeBool": Maybe Bool, "maybeInt": Maybe Int, "maybeNull": Maybe Bool}
+ test/goldens/unwrap_schema_bad_key.golden view
@@ -0,0 +1,1 @@+Cannot get key 'a' in schema: SchemaList {"type": Text, "maybeBool": Maybe Bool, "maybeInt": Maybe Int, "maybeNull": Maybe Bool}
+ test/goldens/unwrap_schema_bad_list.golden view
@@ -0,0 +1,1 @@+Cannot use `[]` operator on schema: SchemaObject {"type": Text, "maybeBool": Maybe Bool, "maybeInt": Maybe Int, "maybeNull": Maybe Bool}
+ test/goldens/unwrap_schema_bad_question.golden view
@@ -0,0 +1,1 @@+Cannot use `?` operator on schema: SchemaObject {"type": Text, "maybeBool": Maybe Bool, "maybeInt": Maybe Int, "maybeNull": Maybe Bool}
+ test/goldens/unwrap_schema_nested_list.golden view
@@ -0,0 +1,1 @@+[{"a": Nothing, "b": 1},{"a": Just {"b": 2}, "b": 3}]
+ test/goldens/unwrap_schema_nested_object.golden view
@@ -0,0 +1,1 @@+[1,2]
+ test/nested.json view
@@ -0,0 +1,14 @@+{+ "list": [+ {+ "a": null,+ "b": 1+ },+ {+ "a": {+ "b": 2+ },+ "b": 3+ }+ ]+}