diff options
-rw-r--r-- | book/book.typ | 105 |
1 files changed, 56 insertions, 49 deletions
diff --git a/book/book.typ b/book/book.typ index b23f3e77..6ceca284 100644 --- a/book/book.typ +++ b/book/book.typ @@ -8,17 +8,21 @@ #let document_flags = ("image_attribution",) #let load_locale(name) = { - read("locale/"+name+".ini") - .split("\n") - .filter(l => l != "[hurrycurry]") - .filter(l => l != "") - .map(l => l.split("=")) - .map(((x,y)) => (x.trim(), y.trim().replace("%n","\n"))) + read("locale/" + name + ".ini") + .split("\n") + .filter(l => l != "[hurrycurry]") + .filter(l => l != "") + .map(l => l.split("=")) + .map(((x, y)) => (x.trim(), y.trim().replace("%n", "\n"))) } #let translations = { - let d = (a:1) - for (k,v) in load_locale("en") { d.insert(k,v) } - for (k,v) in load_locale(lang) { d.insert(k,v) } + let d = (a: 1) + for (k, v) in load_locale("en") { + d.insert(k, v) + } + for (k, v) in load_locale(lang) { + d.insert(k, v) + } d } #let tr(s) = translations.at(s, default: text(fill: red)[TRANSLATION: #s]) @@ -26,49 +30,52 @@ #let msgstr(o) = if "translation" in o { tr(o.translation.id) } else { o.text } #let element(elem) = if elem.t == "document" [ - #for e in elem.es [ - #element(e) - ] - ] else if elem.t == "page" [ - #page( - background: if "background" in elem { image( - "assets/"+elem.background+".jpeg", - fit: "cover", height: 100%, width: 100% - )} else { none }, [ - #for e in elem.es [ - #element(e) - ] - ]) - ] else if elem.t == "text" [ - #text( - font: elem.font, - size: elem.size * 1pt, - fill: rgb(elem.color), - weight: if "bold" in elem { "bold" } else { "regular" }, - msgstr(elem.s) + #for e in elem.es [ + #element(e) + ] +] else if elem.t == "page" [ + #page(background: if "background" in elem { + image( + "assets/" + elem.background + ".jpeg", + fit: "cover", + height: 100%, + width: 100%, ) - ] else if elem.t == "list" [ - #list(..elem.es.map(element)) - ] else if elem.t == "par" [ - #par[#for x in elem.es.map(element) [#x]] - ] else if elem.t == "table" [ - #table(columns: elem.es.at(0).len(), ..elem.es.flatten().map(element)) - ] else if elem.t == "conditional" [ - #if (elem.cond in document_flags) == elem.value [ - #element(elem.e) - ] - ] else if elem.t == "ref" [ - #link(label(elem.id), element(elem.e)) - ] else if elem.t == "label" [ - #element(elem.e) #label(elem.id) - ] else if elem.t == "align" [ - #h(1fr) #align(if elem.dir == "flow_end" { right } else { bottom }, element(elem.e)) - ] else if elem.t == "container" [ + } else { none }, [ #for e in elem.es [ #element(e) ] - ] else [ - #elem + ]) +] else if elem.t == "text" [ + #text( + font: elem.font, + size: elem.size * 1pt, + fill: rgb(elem.color), + weight: if "bold" in elem { "bold" } else { "regular" }, + msgstr(elem.s), + ) +] else if elem.t == "list" [ + #list(..elem.es.map(element)) +] else if elem.t == "par" [ + #par[#for x in elem.es.map(element) [#x]] +] else if elem.t == "table" [ + #table(columns: elem.es.at(0).len(), ..elem.es.flatten().map(element)) +] else if elem.t == "conditional" [ + #if (elem.cond in document_flags) == elem.value [ + #element(elem.e) + ] +] else if elem.t == "ref" [ + #link(label(elem.id), element(elem.e)) +] else if elem.t == "label" [ + #element(elem.e) #label(elem.id) +] else if elem.t == "align" [ + #h(1fr) #align(if elem.dir == "flow_end" { right } else { bottom }, element(elem.e)) +] else if elem.t == "container" [ + #for e in elem.es [ + #element(e) ] +] else [ + #elem +] -#element(json.decode(read("book.json"))) +#element(json("book.json")) |