Symbol constructor
This commit is contained in:
parent
bfb0825721
commit
b5940cfe22
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue