Spry: binary encoding and decoding
This commit is contained in:
parent
a8373e37c6
commit
c74f5c2c63
|
@ -116,20 +116,38 @@ when isMainModule:
|
|||
|
||||
proc addPreserves*(spry: Interpreter) =
|
||||
nimFunc("parsePreserves"):
|
||||
let str = StringVal(evalArg(spry)).value
|
||||
PreservesNode(preserve: parsePreserves(str))
|
||||
let node = evalArg(spry)
|
||||
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"):
|
||||
let node = evalArg(spry)
|
||||
if node of PreservesNode:
|
||||
let pr = PreservesNode(node).preserve
|
||||
return toSpry(pr, spry)
|
||||
|
||||
nimMeth("toPreserves"):
|
||||
let node = evalArgInfix(spry)
|
||||
PreservesNode(preserve: node.toPreserve)
|
||||
|
||||
nimMeth("arity"):
|
||||
let node = evalArgInfix(spry)
|
||||
if node of RecordNode:
|
||||
return newValue(pred SeqComposite(node).nodes.len)
|
||||
|
||||
nimMeth("label"):
|
||||
let node = evalArgInfix(spry)
|
||||
if node of RecordNode:
|
||||
|
|
Loading…
Reference in New Issue