summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/book.typ105
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"))