Mafia-the-Game-Description/utils.typ
Kristofers Solo b9630e00df release
2024-01-18 22:50:20 +02:00

127 lines
2.8 KiB
Plaintext

#import "@preview/tablex:0.0.6": tablex
#import "@preview/big-todo:0.2.0": todo as TODO
#let custom-block(item) = {
set align(start)
block(
inset: 8pt,
stroke: black,
width: 100%,
spacing: 0pt,
breakable: true,
item
)
}
#let longtable(
title: "",
titles: (),
caption: "",
..items
) = {
set par(first-line-indent: 0pt)
figure(
gap: 1.5em,
kind: table,
caption: if caption != ""{
caption
} else {
if titles.len() == 0 {
title
} else {
titles.first()
}
},
[
#if titles.len() == 0 {
custom-block(text(weight: "bold", title))
}
#for i in range(items.pos().len()) {
if titles.len() > 0 {
custom-block(text(weight: "bold", titles.at(i)))
}
custom-block(items.pos().at(i))
}
]
)
linebreak()
}
#let parameter-table(caption: "", ..items) = {
if caption == "" {
caption = items.pos().first()
}
longtable(
titles: ("Parametra nosaukums", "Parametra identifikators", "Parametra apraksts", "Parametra prasības", "Parametra piemērs (/-i)"),
caption: caption,
..items
)
}
#let procedure-table(caption: "", ..items) = {
if caption == "" {
caption = items.pos().first()
}
longtable(
titles: ("Procedūras nosaukums", "Procedūras identifikators", "Procedūras apraksts", "Ievade", "Apstrāde", "Izvade"),
caption: caption,
..items
)
}
#let function-table(caption: "", ..items) = {
if caption == "" {
caption = items.pos().first()
}
longtable(
titles: ("Funkcijas nosaukums", "Funkcijas identifikators", "Ievads", "Ievade", "Apstrāde", "Izvade", "Paziņojumi",),
caption: caption,
..items
)
}
#let entity-table-row(..items) = {
(
items.pos().at(0),
upper(raw(items.pos().at(1), block: false)),
upper(raw(items.pos().at(2), block: false)),
items.pos().at(3)
)
}
#let entity-table(caption: "", id: (), ..items) = {
if id == () {
id = ("id", "serial8", "primary key, not null", "Unikālais identifikators")
}
figure(
caption: caption,
kind: table,
tablex(
columns: (4cm, 3cm, auto, auto),
repeat-header: true,
/* Header */
[*Lauks*], [*Datu tips*], [*Lauka atribūti*], [*Apraksts*],
..entity-table-row(..id), // id row
..for i in range(items.pos().len(), step:4){
entity-table-row(..items.pos().slice(i, i+4))
},
)
)
}
#let todo(..body) = {
TODO(..body, inline: true, big_text: 14pt, small_text: 12pt)
}
#let hyperlink-source(author, title, link_str, date) = {
if link_str == "" {
[#author #title Aplūkots #date.display("[day].[month].[year]")]
} else {
[#author #title Pieejams: #link(link_str) aplūkots #date.display("[day].[month].[year]")]
}
}