Move jsonhooks check to runnableExamples
This commit is contained in:
parent
a74b28cc6f
commit
335d1b61cc
|
@ -1,6 +1,6 @@
|
|||
# Package
|
||||
|
||||
version = "20230403"
|
||||
version = "20230410"
|
||||
author = "Emery Hemingway"
|
||||
description = "data model and serialization format"
|
||||
license = "Unlicense"
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
include_rules
|
||||
: foreach preserves_schema_nim.nim schemac.nim |> !nim |> $(BIN_DIR)/%B | $(BIN_DIR)/<%B>
|
||||
: foreach *hooks.nim |> !nim_check |>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2021 ☭ Emery Hemingway
|
||||
# SPDX-FileCopyrightText: ☭ Emery Hemingway
|
||||
# SPDX-License-Identifier: Unlicense
|
||||
|
||||
import std/[json, tables]
|
||||
|
@ -28,7 +28,14 @@ proc toPreserveHook*(js: JsonNode; E: typedesc): Preserve[E] =
|
|||
for i, e in js.elems:
|
||||
result.sequence[i] = toPreserveHook(e, E)
|
||||
|
||||
proc fromPreserveHook*[E](js: var JsonNode; prs: Preserve[E]): bool =
|
||||
proc fromPreserveHook*[E](js: var JsonNode; prs: Preserve[E]): bool {.gcsafe.} =
|
||||
runnableExamples:
|
||||
import std/json
|
||||
var js = JsonNode()
|
||||
var pr = js.toPreserveHook(void)
|
||||
assert fromPreserveHook(js, pr)
|
||||
fromJsonHook(pr, js)
|
||||
js = toJsonHook(pr)
|
||||
case prs.kind:
|
||||
of pkBoolean:
|
||||
js = newJBool(prs.bool)
|
||||
|
@ -54,14 +61,14 @@ proc fromPreserveHook*[E](js: var JsonNode; prs: Preserve[E]): bool =
|
|||
js = newJArray()
|
||||
js.elems.setLen(prs.sequence.len)
|
||||
for i, val in prs.sequence:
|
||||
if not fromPreserve(js.elems[i], val):
|
||||
if not fromPreserveHook(js.elems[i], val):
|
||||
return false
|
||||
of pkSet:
|
||||
js = newJArray()
|
||||
js.elems.setLen(prs.set.len)
|
||||
var i: int
|
||||
for val in prs.set:
|
||||
if not fromPreserve(js.elems[i], val):
|
||||
if not fromPreserveHook(js.elems[i], val):
|
||||
return false
|
||||
inc i
|
||||
of pkDictionary:
|
||||
|
@ -70,7 +77,7 @@ proc fromPreserveHook*[E](js: var JsonNode; prs: Preserve[E]): bool =
|
|||
if key.kind != pkString:
|
||||
return false
|
||||
var jsVal: JsonNode
|
||||
if not fromPreserve(jsVal, val): return false
|
||||
if not fromPreserveHook(jsVal, val): return false
|
||||
js[key.string] = jsVal
|
||||
else: return false
|
||||
true
|
||||
|
@ -81,10 +88,3 @@ proc toJsonHook*[E](pr: Preserve[E]): JsonNode =
|
|||
|
||||
proc fromJsonHook*[E](pr: var Preserve[E]; js: JsonNode) =
|
||||
pr = toPreserveHook(js, E)
|
||||
|
||||
when isMainModule:
|
||||
var js = JsonNode()
|
||||
var pr = js.toPreserveHook(void)
|
||||
assert fromPreserveHook(js, pr)
|
||||
fromJsonHook(pr, js)
|
||||
js = toJsonHook(pr)
|
||||
|
|
Loading…
Reference in New Issue