preserves-nim/src/preserves/private/preserves_encode.nim

49 lines
1.4 KiB
Nim
Raw Normal View History

2021-09-08 09:11:54 +00:00
# SPDX-FileCopyrightText: 2021 ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
2021-12-06 23:28:00 +00:00
import std/[json, options, streams, xmlparser, xmltree]
2021-09-08 09:11:54 +00:00
from std/os import extractFilename, paramStr
2022-04-25 16:44:43 +00:00
import ../../preserves, ../jsonhooks, ../xmlhooks
2021-09-08 09:11:54 +00:00
when isMainModule:
let command = extractFilename(paramStr 0)
try:
case command:
of "preserves_encode":
let pr = stdin.readAll.parsePreserves
stdout.newFileStream.write(pr)
of "preserves_decode":
let pr = stdin.readAll.decodePreserves
stdout.writeLine($pr)
of "preserves_from_json":
let
js = stdin.newFileStream.parseJson
pr = js.toPreserve
stdout.newFileStream.write(pr)
2021-12-06 23:28:00 +00:00
of "preserves_from_xml":
let
xn = stdin.newFileStream.parseXml
pr = xn.toPreserveHook(void)
stdout.newFileStream.write(pr)
2021-09-08 09:11:54 +00:00
of "preserves_to_json":
let
pr = stdin.readAll.decodePreserves
js = preserveTo(pr, JsonNode)
if js.isSome:
stdout.writeLine(get js)
else:
quit("Preserves not convertable to JSON")
2021-12-06 23:28:00 +00:00
of "preserves_to_xml":
let pr = stdin.readAll.decodePreserves
var xn: XmlNode
if fromPreserveHook(xn, pr):
stdout.writeLine(xn)
else:
quit("Preserves not convertable to XML")
2021-09-08 09:11:54 +00:00
else:
quit("no behavior defined for " & command)
except:
let msg = getCurrentExceptionMsg()
quit(msg)