16 lines
436 B
Typst
16 lines
436 B
Typst
#let isUsed = state("mitreIsUsed", false)
|
|
#let mitreData = json("../extern/mitre-attack.json")
|
|
|
|
#let reference(name: str, id: str) = {
|
|
let elem = mitreData.find(d => d.name == name or d.id == id)
|
|
if elem == none {
|
|
panic("Referenced MITRE ATT&CK attack pattern, but it couldn't be found: id=" + str(id) + ", name=" + str(name))
|
|
}
|
|
|
|
text([
|
|
_#elem.name _ (#elem.id)#footnote(elem.url)
|
|
])
|
|
|
|
context(isUsed.update(true))
|
|
}
|