Implement json.% for tables and options

This commit is contained in:
Oscar Nihlgård
2019-02-09 22:34:35 +01:00
committed by Dominik Picheta
parent 0c4d1fd10b
commit f1ae0ed6ea

View File

@@ -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