56da014b9b
refactor: break up into multiple files feat: csl style refactor!: rename variables Update template, readme, and more
53 lines
1.6 KiB
Typst
53 lines
1.6 KiB
Typst
/// month name from its number
|
|
#let month-gen(month) = (
|
|
"січня",
|
|
"лютого",
|
|
"березня",
|
|
"квітня",
|
|
"травня",
|
|
"червня",
|
|
"липня",
|
|
"серпня",
|
|
"вересня",
|
|
"жовтня",
|
|
"листопада",
|
|
"грудня",
|
|
).at(month - 1)
|
|
|
|
#let is-cyr(c) = regex("[\p{Cyrillic}]") in c
|
|
|
|
/// type-safe emptiness check
|
|
#let is-empty(val) = {
|
|
if val == none { return true }
|
|
if type(val) == str { val.len() == 0 } else if type(val) == array { val == [] } else { false }
|
|
}
|
|
|
|
#let degree-get(m) = if "degree" in m and not is-empty(m.degree) { [#m.degree\ ] }
|
|
|
|
/// returns verb form based on gender ("m", "f", or "p" for plural)
|
|
#let gender-verb(verb, gender: "p") = {
|
|
(
|
|
"author": ("m": "Виконав", "f": "Виконала", "p": "Виконали"),
|
|
"mentor": ("m": "Перевірив", "f": "Перевірила", "p": "Перевірили"),
|
|
)
|
|
.at(verb)
|
|
.at(if gender == "m" or gender == "f" { gender } else { "p" })
|
|
}
|
|
|
|
/// returns verb form for dictionary containing gender field
|
|
#let gender-form(verb, dict: none) = {
|
|
let g = if type(dict) == dictionary and "gender" in dict { dict.gender } else { "p" }
|
|
gender-verb(verb, gender: g)
|
|
}
|
|
|
|
#let pz-lb-title(type, number: none) = {
|
|
let type-title = (
|
|
"ЛБ": [Звіт \ з лабораторної роботи],
|
|
"ПЗ": [Звіт \ з практичної роботи],
|
|
"КР": [Контрольна робота],
|
|
"РФ": [Реферат],
|
|
"ІДЗ": [Індивідуальне домашнє завдання],
|
|
).at(type, default: type)
|
|
if not is-empty(number) { [#type-title №#number] } else { [#type-title] }
|
|
}
|