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
|
2022-12-08 07:53:11 +00:00
|
|
|
if fromPreserve(xn, pr):
|
2021-12-06 23:28:00 +00:00
|
|
|
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)
|