37 lines
841 B
Typst
37 lines
841 B
Typst
#import "@preview/codly:1.3.0": codly-disable, codly-enable
|
|
#import "../requirements.typ": isc-hei-bthesis
|
|
|
|
#let format-ast-nodes(name, base-cls, code) = {
|
|
let nodes = code.text.split(regex(`\n\nclass`.text)).map(n => if n.starts-with("class") {n} else {"class" + n})
|
|
|
|
let cells = nodes.map(n => raw(n, block: true, lang: "python"))
|
|
|
|
if calc.rem(cells.len(), 3) == 2 {
|
|
let last-two = cells.slice(-2)
|
|
cells = cells.slice(0, -2)
|
|
let last = grid.cell(
|
|
colspan: 3,
|
|
stack(
|
|
dir: ltr,
|
|
spacing: 1fr,
|
|
none,
|
|
..last-two,
|
|
none
|
|
)
|
|
)
|
|
cells.push(last)
|
|
}
|
|
|
|
align(center)[*#name*]
|
|
if base-cls != none [Base class: #base-cls]
|
|
|
|
codly-disable()
|
|
grid(
|
|
columns: 3,
|
|
column-gutter: 1fr,
|
|
row-gutter: 2em,
|
|
align: left + top,
|
|
..cells
|
|
)
|
|
codly-enable()
|
|
} |