typst/tests/suite/scripting/get-rule.typ
2024-05-17 14:27:59 +02:00

68 lines
2.0 KiB
Typst

--- get-rule-basic ---
// Test basic get rule.
#context test(text.lang, "en")
#set text(lang: "de")
#context test(text.lang, "de")
#text(lang: "es", context test(text.lang, "es"))
--- get-rule-in-function ---
// Test whether context is retained in nested function.
#let translate(..args) = args.named().at(text.lang)
#set text(lang: "de")
#context test(translate(de: "Inhalt", en: "Contents"), "Inhalt")
--- get-rule-in-array-callback ---
// Test whether context is retained in built-in callback.
#set text(lang: "de")
#context test(
("en", "de", "fr").sorted(key: v => v != text.lang),
("de", "en", "fr"),
)
--- get-rule-folding ---
// Test folding.
#set rect(stroke: red)
#context {
test(type(rect.stroke), stroke)
test(rect.stroke.paint, red)
}
#[
#set rect(stroke: 4pt)
#context test(rect.stroke, 4pt + red)
]
#context test(rect.stroke, stroke(red))
--- get-rule-figure-caption-collision ---
// We have one collision: `figure.caption` could be both the element and a get
// rule for the `caption` field, which is settable. We always prefer the
// element. It's unfortunate, but probably nobody writes
// `set figure(caption: ..)` anyway.
#test(type(figure.caption), function)
#context test(type(figure.caption), function)
--- get-rule-assertion-failure ---
// Error: 10-31 Assertion failed: "en" != "de"
#context test(text.lang, "de")
--- get-rule-unknown-field ---
// Error: 15-20 function `text` does not contain field `langs`
#context text.langs
--- get-rule-inherent-field ---
// Error: 18-22 function `heading` does not contain field `body`
#context heading.body
--- get-rule-missing-context-no-context ---
// Error: 7-11 can only be used when context is known
// Hint: 7-11 try wrapping this in a `context` expression
// Hint: 7-11 the `context` expression should wrap everything that depends on this function
#text.lang
--- get-rule-unknown-field-no-context ---
// Error: 7-12 function `text` does not contain field `langs`
#text.langs
--- get-rule-inherent-field-no-context ---
// Error: 10-14 function `heading` does not contain field `body`
#heading.body