Sebastian Walz 860d31cee1
Tohu vaBohu
2023-04-21 00:22:52 +02:00

84 lines
3.5 KiB
Nix

{ core, ... }:
let
inherit(core) debug integer list path set string type;
in
{ configuration, resources, ... }:
{
dst = "generated/acronyms.lua";
src
= path.fromSet "acronyms.lua"
(
name:
value:
let
escape = text: string.trim ( string.replace [ "\\" "\n" ] [ "\\\\" " " ] text );
textDeu
= if set.isInstanceOf value.text.deu
then
"{\n \"${escape value.text.deu.tex or ""}\",\n \"${escape value.text.deu.pdf or ""}\"\n }"
else
"\"${escape value.text.deu}\"";
textEng
= if value.text ? eng
&& set.isInstanceOf value.text.eng
then
"{\n \"${escape value.text.eng.tex or ""}\",\n \"${escape value.text.eng.pdf or ""}\"\n }"
else
"\"${escape value.text.eng or ""}\"";
sortedBy
= if value ? "sortedBy"
then
if set.isInstanceOf value.sortedBy
then
"\n sortedBy\n = {\n deu = \"${escape value.sortedBy.deu or ""}\",\n eng = \"${escape value.sortedBy.eng or ""},\"\n },"
else if integer.isInstanceOf value.sortedBy
then
"\n sortedBy = ${string value.sortedBy},"
else
"\n sortedBy = \"${escape value.sortedBy}\","
else
"";
bookmarkAs
= if value ? "bookmarkAs"
then
"\n bookmarkAs = \"${escape value.bookmarkAs}\","
else
"";
chemical
= if value.data ? "struct"
then
"\n \"${escape value.data.struct}\","
else
"";
short
= if set.isInstanceOf value.data.short
then
"{\n deu = \"${escape value.data.short.deu or ""}\",\n eng = \"${escape value.data.sorshortt.eng or ""},\"\n }"
else
"\"${escape value.data.short}\"";
in
''
acronyms.list [ "${name}" ]
= {
section = sections.${value.section},
text
= {
deu = ${textDeu},
eng = ${textEng},
},
description
= {
deu = "${escape value.description.deu or ""}",
eng = "${escape value.description.eng or ""}",
},
data
= {
acronyms.types.${value.data.kind},
${short},${chemical}
},${sortedBy}${bookmarkAs}
}
''
)
resources.acronyms or { };
}