diff options
author | Oscar NihlgÄrd <oscarnihlgard@gmail.com> | 2019-02-09 22:34:35 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2019-02-10 00:29:24 +0000 |
commit | f1ae0ed6ea9b15e86f437e836d6a255630e4b181 (patch) | |
tree | 56c88947458979879dde6929964422e26657c1b4 | |
parent | 0c4d1fd10b0c69cef2597a59799d87110d613eae (diff) | |
download | Nim-f1ae0ed6ea9b15e86f437e836d6a255630e4b181.tar.gz |
Implement `json.%` for tables and options
-rw-r--r-- | lib/pure/json.nim | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim index 176da1d9d..e387c516b 100644 --- a/lib/pure/json.nim +++ b/lib/pure/json.nim @@ -143,7 +143,7 @@ runnableExamples: import hashes, tables, strutils, lexbase, streams, unicode, macros, parsejson, - typetraits + typetraits, options export tables.`$` @@ -344,6 +344,16 @@ proc `%`*[T](elements: openArray[T]): JsonNode = result = newJArray() for elem in elements: result.add(%elem) +proc `%`*[T](table: Table[string, T]|OrderedTable[string, T]): JsonNode = + ## Generic constructor for JSON data. Creates a new ``JObject JsonNode``. + result = newJObject() + for k, v in table: result[k] = %v + +proc `%`*[T](opt: Option[T]): JsonNode = + ## Generic constructor for JSON data. Creates a new ``JNull JsonNode`` + ## if ``opt`` is empty, otherwise it delegates to the underlying value. + if opt.isSome: %opt.get else: newJNull() + when false: # For 'consistency' we could do this, but that only pushes people further # into that evil comfort zone where they can use Nim without understanding it |