[mod] auf ivaldi umgestellt

This commit is contained in:
fenris 2026-10-12 19:37:42 +02:00
parent a47f272040
commit 4de54b516b
7 changed files with 5896 additions and 126 deletions

44
ivaldi.json Normal file
View file

@ -0,0 +1,44 @@
{
"version": "1",
"name": "sd",
"libs": {
"plankton": [
"base",
"call",
"list",
"json",
"file",
"string",
"xml",
"args"
]
},
"core": [
"base.ts",
"objects/base.ts",
"objects/implementations/text.ts",
"objects/implementations/code.ts",
"objects/implementations/link.ts",
"objects/implementations/group.ts",
"objects/implementations/section.ts",
"objects/implementations/list.ts",
"objects/implementations/table.ts",
"document.ts",
"outputs/base.ts",
"outputs/implementations/json.ts",
"outputs/implementations/markdown.ts",
"outputs/implementations/html.ts",
"outputs/implementations/tex.ts"
],
"apps": [
{
"name": "main",
"sources": [
"main.ts"
],
"destination": "sd",
"head": "#!/usr/bin/env node",
"executable": true
}
]
}

View file

@ -1,15 +1,33 @@
#!/usr/bin/env node #!/usr/bin/env node
function main(args) function read_stdin()
{
return (
new Promise(
(resolve, reject) => {
process.stdin.on(
"data",
(data) => {
resolve(data.toString());
}
);
}
)
);
}
async function main(args)
{ {
// args // args
const path_transform = ((args.length >= 0) ? args.shift() : "transform.js"); const path_transform = ((args.length >= 0) ? args.shift() : "transform.js");
const path_data = ((args.length >= 0) ? args.shift() : "data.json"); // const path_data = ((args.length >= 0) ? args.shift() : "data.json");
// exec // exec
const _fs = require("fs"); const _fs = require("fs");
const data = JSON.parse(_fs.readFileSync(path_data).toString()); // const data = JSON.parse(_fs.readFileSync(path_data).toString());
const transformation_code = _fs.readFileSync(path_transform).toString() const data = JSON.parse(await read_stdin());
const transformation_code = _fs.readFileSync(path_transform).toString();
const sd = eval(transformation_code)(data); const sd = eval(transformation_code)(data);
// output // output
@ -18,4 +36,4 @@ function main(args)
} }
main(process.argv.slice(2)); main(process.argv.slice(2)).catch(console.error);

View file

@ -3,6 +3,11 @@
zum Erzeugen von Dokumenten anhand von JSON-Daten zum Erzeugen von Dokumenten anhand von JSON-Daten
## Erstellung
- `tools/ivaldi build` ausführen
## Nutzung ## Nutzung
Am beigefügten Beispiel `polyhedra`: Am beigefügten Beispiel `polyhedra`:
@ -17,12 +22,12 @@ Folgende Abwandlungen sind möglich:
```sh ```sh
# Markdown-Tabelle # Markdown-Tabelle
misc/conv misc/examples/polyhedra/transform-table.js misc/examples/polyhedra/data.json | build/sd -o markdown > /tmp/polyhedra-table.md cat misc/examples/polyhedra/data.json | misc/conv misc/examples/polyhedra/transform-table.js | build/sd -o markdown > /tmp/polyhedra-table.md
# HTML-Liste # HTML-Liste
misc/conv misc/examples/polyhedra/transform-default.js misc/examples/polyhedra/data.json | build/sd -o html > /tmp/polyhedra-default.html cat misc/examples/polyhedra/data.json | misc/conv misc/examples/polyhedra/transform-default.js | build/sd -o html > /tmp/polyhedra-default.html
# HTML-Tabelle # HTML-Tabelle
misc/conv misc/examples/polyhedra/transform-table.js misc/examples/polyhedra/data.json | build/sd -o html > /tmp/polyhedra-table.html cat misc/examples/polyhedra/data.json | misc/conv misc/examples/polyhedra/transform-table.js | build/sd -o html > /tmp/polyhedra-table.html
``` ```

View file

@ -1,40 +0,0 @@
#!/usr/bin/env python3
import os as _os
import argparse as _argparse
def string_coin(template, arguments):
result = template
for (key, value, ) in arguments.items():
result = result.replace("{{%s}}" % key, value)
return result
def main():
## args
argument_parser = _argparse.ArgumentParser()
argument_parser.add_argument(
"-o",
"--output-directory",
type = str,
default = "build",
metavar = "<output-directory>",
)
args = argument_parser.parse_args()
## exec
_os.system(
string_coin(
"make --file={{path_makefile}} dir_build={{dir_build}}",
{
"path_makefile": "tools/makefile",
"dir_build": args.output_directory,
}
)
)
main()

5821
tools/ivaldi Executable file

File diff suppressed because it is too large Load diff

View file

@ -1,52 +0,0 @@
## vars
dir_lib := lib
dir_source := source
dir_temp := temp
dir_build := build
## commands
cmd_mkdir := mkdir --parents
cmd_log := echo "--"
cmd_tsc := tsc
cmd_chmod := chmod
cmd_echo := echo
cmd_cat := cat
## rules
.PHONY: _default
_default: ${dir_build}/sd
${dir_temp}/sd-unlinked.js: \
${dir_lib}/plankton/plankton.d.ts \
${dir_source}/base.ts \
${dir_source}/objects/base.ts \
${dir_source}/objects/implementations/text.ts \
${dir_source}/objects/implementations/code.ts \
${dir_source}/objects/implementations/link.ts \
${dir_source}/objects/implementations/group.ts \
${dir_source}/objects/implementations/section.ts \
${dir_source}/objects/implementations/list.ts \
${dir_source}/objects/implementations/table.ts \
${dir_source}/document.ts \
${dir_source}/outputs/base.ts \
${dir_source}/outputs/implementations/json.ts \
${dir_source}/outputs/implementations/markdown.ts \
${dir_source}/outputs/implementations/html.ts \
${dir_source}/outputs/implementations/tex.ts \
${dir_source}/main.ts
@ ${cmd_log} "compiling …"
@ ${cmd_mkdir} $(dir $@)
@ ${cmd_tsc} --lib es2020 $^ --outFile $@
${dir_build}/sd: ${dir_lib}/plankton/plankton.js ${dir_temp}/sd-unlinked.js
@ ${cmd_log} "linking …"
@ ${cmd_mkdir} $(dir $@)
@ ${cmd_echo} "#!/usr/bin/env node" > $@
@ ${cmd_cat} $^ >> $@
@ ${cmd_chmod} +x $@

View file

@ -1,26 +0,0 @@
#!/usr/bin/env sh
## consts
dir="lib/plankton"
## vars
modules=""
modules="${modules} base"
modules="${modules} call"
modules="${modules} list"
modules="${modules} json"
modules="${modules} file"
modules="${modules} args"
modules="${modules} string"
modules="${modules} xml"
## exec
mkdir --parents ${dir}
cd ${dir}
ptk bundle node ${modules}
cd - > /dev/null