Files
Nim/lib/pure
Ivan Bobev ccd77b42af Add some enhancements to jsonutils.nim (#15133)
* Add some enhancements to `jsonutils.nim`

* Use `jsonutils.nim` hookable API to add a possibility to deserialize
  JSON arrays directly to `HashSet` and `OrderedSet` types and
  respectively to serialize those types to JSON arrays.

* Also add a possibility to deserialize JSON `null` objects to Nim
  option objects and respectively to serialize Nim option object to JSON
  object if some or to JSON `null` object if none.

* Move serialization/deserialization functionality for `Table` and
  `OrderedTable` types from `jsonutils.nim` to `tables.nim` via the
  hookable API.

* Add object `jsonutils.Joptions` and parameter from its type to
  `jsonutils.fromJson` procedure to control whether to allow
  deserializing JSON objects to Nim objects when the JSON has some
  extra or missing keys.

* Add unit tests for the added functionalities to `tjsonutils.nim`.

* improve fromJsonFields

* Add changelog entry for the jsonutils enhancements

* Add TODO in `jsonutils.nim`

* Added an entry to "Future directions" section in `jsonutils.nim` as
  suggestion for future support of serialization and de-serialization of
  nested variant objects.

* Added currently disabled test case in `tjsonutils.nim` for testing
  serialization and de-serialization of nested variant objects.

* Move JSON hooks to `jsonutils.nim`

Move `fromJsonHook` and `toJsonHook` procedures for different types to
`jsonutils.nim` module to avoid a dependency of collections modules to
the `json.nim` module.

The hooks are removed from the following modules:

  * `tables.nim`

  * `sets.nim`

  * `options.nim`

  * `strtabs.nim`

* Add some tests about `StringTableRef`

Add tests for `StringTableRef`'s `fromJsonHook` and `toJsonHook` to
`tjsonutils.nim`.

* Disable a warning in `jsonutils.nim`

Mark `fun` template in `jsonutils` module with `{.used.}` pragma in
order to disable `[XDeclaredButNotUsed]` hint. The template is actually
used by the `initCaseObject` macro in the same module.

Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
2020-09-09 14:18:59 +02:00
..
2020-08-08 07:24:54 +02:00
2020-07-08 08:21:55 +02:00
2020-06-28 13:38:57 +02:00
2018-04-30 02:52:58 +02:00
2015-10-01 12:05:45 -07:00
2020-05-05 10:34:37 +02:00
2020-08-11 14:49:57 +02:00
2020-04-02 02:58:43 +02:00
2018-04-06 11:59:49 +02:00
2020-05-18 17:43:06 +01:00
2020-07-23 15:42:12 +02:00
2020-07-14 13:15:22 +02:00
2019-09-30 13:58:10 +02:00
2020-06-23 15:17:17 +02:00
2020-03-31 15:47:57 +02:00
2020-09-09 12:47:22 +02:00
2019-09-30 13:58:10 +02:00
2020-08-29 08:06:11 -04:00
2020-07-18 10:41:33 +02:00
2020-03-19 10:23:05 +01:00
2020-01-24 08:42:03 +00:00
2020-07-15 03:46:17 -04:00
2020-05-11 19:12:40 +02:00
2020-03-31 15:47:57 +02:00
2020-07-18 10:41:33 +02:00
2020-08-26 15:27:15 +02:00
2020-07-07 22:57:06 +02:00
2020-08-27 11:25:20 +02:00
2020-07-14 16:44:56 +02:00