Spry: binary encoding and decoding
This commit is contained in:
parent
a8373e37c6
commit
c74f5c2c63
|
@ -116,20 +116,38 @@ when isMainModule:
|
||||||
|
|
||||||
proc addPreserves*(spry: Interpreter) =
|
proc addPreserves*(spry: Interpreter) =
|
||||||
nimFunc("parsePreserves"):
|
nimFunc("parsePreserves"):
|
||||||
let str = StringVal(evalArg(spry)).value
|
let node = evalArg(spry)
|
||||||
PreservesNode(preserve: parsePreserves(str))
|
if node of StringVal:
|
||||||
|
let str = StringVal(node).value
|
||||||
|
result = PreservesNode(preserve: parsePreserves(str))
|
||||||
|
|
||||||
|
nimFunc("decodePreserves"):
|
||||||
|
let node = evalArg(spry)
|
||||||
|
if node of StringVal:
|
||||||
|
let str = StringVal(node).value
|
||||||
|
result = PreservesNode(preserve: decodePreserves(cast[seq[byte]](str)))
|
||||||
|
|
||||||
|
nimMeth("encodePreserves"):
|
||||||
|
let node = evalArgInfix(spry)
|
||||||
|
if node of PreservesNode:
|
||||||
|
var bin = encode PreservesNode(node).preserve
|
||||||
|
result = newValue(cast[string](bin))
|
||||||
|
|
||||||
nimFunc("fromPreserves"):
|
nimFunc("fromPreserves"):
|
||||||
let node = evalArg(spry)
|
let node = evalArg(spry)
|
||||||
if node of PreservesNode:
|
if node of PreservesNode:
|
||||||
let pr = PreservesNode(node).preserve
|
let pr = PreservesNode(node).preserve
|
||||||
return toSpry(pr, spry)
|
return toSpry(pr, spry)
|
||||||
|
|
||||||
nimMeth("toPreserves"):
|
nimMeth("toPreserves"):
|
||||||
let node = evalArgInfix(spry)
|
let node = evalArgInfix(spry)
|
||||||
PreservesNode(preserve: node.toPreserve)
|
PreservesNode(preserve: node.toPreserve)
|
||||||
|
|
||||||
nimMeth("arity"):
|
nimMeth("arity"):
|
||||||
let node = evalArgInfix(spry)
|
let node = evalArgInfix(spry)
|
||||||
if node of RecordNode:
|
if node of RecordNode:
|
||||||
return newValue(pred SeqComposite(node).nodes.len)
|
return newValue(pred SeqComposite(node).nodes.len)
|
||||||
|
|
||||||
nimMeth("label"):
|
nimMeth("label"):
|
||||||
let node = evalArgInfix(spry)
|
let node = evalArgInfix(spry)
|
||||||
if node of RecordNode:
|
if node of RecordNode:
|
||||||
|
|
Loading…
Reference in New Issue