130 lines
5.8 KiB
Typst
130 lines
5.8 KiB
Typst
#import "/templates/base.typ"
|
||
#let mos-sec = [
|
||
= Mosici <mos>
|
||
#base.tag("word") #base.tag("mos")
|
||
]
|
||
#let sn = base.s.with("nahan")
|
||
#let mos-pro(ipa) = [
|
||
- #base.wl("/worlds/Asteron/Mosici", [Standard], none) [#ipa]
|
||
]
|
||
#let mos-translit(s) = {
|
||
s .replace("", "a")
|
||
.replace("", "á")
|
||
.replace("", "c")
|
||
.replace("", "e")
|
||
.replace("", "é")
|
||
.replace("", "f")
|
||
.replace("", "h")
|
||
.replace("", "i")
|
||
.replace("", "í")
|
||
.replace("", "l")
|
||
.replace("", "m")
|
||
.replace("", "n")
|
||
.replace("", "o")
|
||
.replace("", "ó")
|
||
.replace("", "p")
|
||
.replace("", "r")
|
||
.replace("", "s")
|
||
.replace("", "t")
|
||
.replace("", "u")
|
||
.replace("", "v")
|
||
.replace("", "z")
|
||
.replace("", ",")
|
||
.replace("", "·")
|
||
.replace("", "’")
|
||
}
|
||
#let mos-cit(t) = [#sn(t) #html.span(class: "low", mos-translit(t))]
|
||
#let mos-nstem(w) = {
|
||
if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")}
|
||
else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")}
|
||
else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")}
|
||
else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")}
|
||
else if w.ends-with("") {(w.clusters().slice(0, -1).join(), "")}
|
||
else if w.ends-with("") {(w.clusters().slice(0, -1).join(), "")}
|
||
else {(w, "")}
|
||
}
|
||
#let mos-vstem(w) = w.clusters().slice(0, -1).join()
|
||
|
||
#let mos-pluralise(w) = {
|
||
// find index of last vowel
|
||
let revw = w.rev()
|
||
let pos = revw.position(regex("[]"))
|
||
let v = revw.at(pos)
|
||
if v == "" {v = ""}
|
||
if v == "" {v = ""}
|
||
if v == "" {v = ""}
|
||
if v == "" {v = ""}
|
||
revw = revw.slice(0, pos) + v + revw.slice(pos)
|
||
revw.rev()
|
||
}
|
||
|
||
|
||
#let mos-n(sg, pl: none) = {
|
||
let pr = if pl == false {""} else if pl != none {pl} else {mos-pluralise(sg)}
|
||
let (ps, pv) = mos-nstem(pr)
|
||
let (ss, sv) = mos-nstem(sg)
|
||
|
||
let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))]
|
||
html.details({
|
||
html.summary[ *Declension for* _#mos-cit(sg)_ #if pl != none and pl != false [*Irr. pl. stem* _#mos-cit(pl)_] else if pl == false [*(Uncountable)*]]
|
||
table(columns: if pl != false {3} else {2},
|
||
..if pl != false { ([],
|
||
base.sc[*sg*], base.sc[*pl*],)} else {()},
|
||
base.sc[*age*], c(sg), ..if pl != false {(c(pr),)} else {()},
|
||
base.sc[*pat*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()},
|
||
base.sc[*gen*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()},
|
||
base.sc[*dat*], c(ss + sv + ""), ..if pl != false {(c(ps + pv + ""),)} else {()},
|
||
base.sc[*abl*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()},
|
||
)
|
||
})
|
||
}
|
||
#let mos-v(w) = {
|
||
let s = mos-vstem(w)
|
||
let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))]
|
||
html.details({
|
||
html.summary[*Conjugation for* _#mos-cit(w)_]
|
||
table(columns: 5,
|
||
[], base.sc[*prs*], base.sc[*pst*], base.sc[*fut*], base.sc[*gno*],
|
||
base.sc[*1s*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*2s*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*3sa*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*3si*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*1pi*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*1pe*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*2p*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*3pa*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*3pi*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*inf*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*pcp.sg*], c(s+""), c(s+""), c(s+""), c(s+""),
|
||
base.sc[*pcp.pl*], c(s+""), c(s+""), c(s+""), c(s+"")
|
||
)
|
||
})
|
||
}
|
||
|
||
#let mos-pron(this) = {
|
||
let c(k, h: false) = if h and k != this [
|
||
#base.wl("dict/"+mos-translit(k), base.s("nahan", k), "mos") \ #html.span(class: "low", mos-translit(k))
|
||
] else [
|
||
#base.s("nahan", k) \ #html.span(class: "low", mos-translit(k))
|
||
]
|
||
|
||
html.details({
|
||
html.summary[Mosici Pronouns]
|
||
table(columns: 6,
|
||
[], base.sc[*agt*], base.sc[*pat*], base.sc[*gen*], base.sc[*dat*], base.sc[*abl*],
|
||
base.sc[*1s*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*1p*], c( ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*2s*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*2p*], c( ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*3sa*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*3pa*], c( ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*3si*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*3pi*], c( ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*dem.sg*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*dem.pl*], c( ""), c(""), c(""), c(""), c(""),
|
||
base.sc[*q*], c(h: true, ""), c(""), c(""), c(""), c(""),
|
||
)
|
||
})
|
||
|
||
}
|