pub fn yaml(
engine: &mut Engine<'_>,
source: Spanned<DataSource>,
) -> SourceResult<Value>Expand description
Reads structured data from a YAML file.
The file must contain a valid YAML object or array. The YAML values will be converted into corresponding Typst values as listed in the table below.
The function returns a dictionary, an array or, depending on the YAML file, another YAML data type.
The YAML files in the example contain objects with authors as keys, each with a sequence of their own submapping with the keys “title” and “published”.
§Example
#let bookshelf(contents) = {
for (author, works) in contents {
author
for work in works [
- #work.title (#work.published)
]
}
}
#bookshelf(
yaml("scifi-authors.yaml")
)§Conversion details { #conversion }
| YAML value | Converted into Typst |
|---|---|
null-values (null, ~ or empty ) | {none} |
| boolean | bool |
| number | [float] or [int] |
| string | str |
| sequence | array |
| mapping | [dictionary] |
| Typst value | Converted into YAML |
|---|---|
| types that can be converted from YAML | corresponding YAML value |
[bytes] | string via [repr] |
[symbol] | string |
[content] | a mapping describing the content |
other types ([length], etc.) | string via [repr] |
§Notes
-
In most cases, YAML numbers will be converted to floats or integers depending on whether they are whole numbers. However, be aware that integers larger than 263-1 or smaller than -263 will be converted to floating-point numbers, which may result in an approximative value.
-
Custom YAML tags are ignored, though the loaded value will still be present.
-
Bytes are not encoded as YAML sequences for performance and readability reasons. Consider using [
cbor.encode] for binary data. -
The
reprfunction is for debugging purposes only, and its output is not guaranteed to be stable across Typst versions.