From b5940cfe22e25031184eac3854881086808de032 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 8 Jun 2021 12:00:28 +0200 Subject: [PATCH] Symbol constructor --- src/preserves.nim | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/preserves.nim b/src/preserves.nim index d98eeaa..568561e 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -37,10 +37,14 @@ type of pkEmbedded: embedded*: T -proc label*[T](prs: Preserve[T]): Preserve[T] = +proc symbol*[T](s: string): Preserve[void] {.inline.} = + ## Symbol constructor. + Preserve[T](kind: pkSymbol, symbol: s) + +proc label*[T](prs: Preserve[T]): Preserve[T] {.inline.} = prs.record[0] -proc fields*[T](prs: Preserve[T]): seq[Preserve[T]] = +proc fields*[T](prs: Preserve[T]): seq[Preserve[T]] {.inline.} = prs.record[1..prs.record.high] iterator fields*[T](prs: Preserve[T]): seq[Preserve[T]] = @@ -365,9 +369,8 @@ proc parsePreserve*(s: Stream): Preserve[void] = let len = s.readVarint() result.bytes = cast[seq[byte]](s.readStr(len)) of 0xb3: - result = Preserve[void](kind: pkSymbol) let len = s.readVarint() - result.symbol = s.readStr(len) + result = symbol[void](s.readStr(len)) of 0xb4: result = Preserve[void](kind: pkRecord) while s.peekUint8() != endMarker: @@ -447,10 +450,10 @@ proc toPreserve*(js: JsonNode): Preserve[void] = result = Preserve[void](kind: pkDouble, double: js.fnum) of JBool: result = case js.bval - of false: Preserve[void](kind: pkSymbol, symbol: "false") - of true: Preserve[void](kind: pkSymbol, symbol: "true") + of false: symbol[void]"false" + of true: symbol[void]"true" of JNull: - result = Preserve[void](kind: pkSymbol, symbol: "null") + result = symbol[void]"null" of JObject: result = Preserve[void](kind: pkDictionary) for key, val in js.fields.pairs: