yaml

Function yaml 

Source
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 valueConverted into Typst
null-values (null, ~ or empty ){none}
booleanbool
number[float] or [int]
stringstr
sequencearray
mapping[dictionary]
Typst valueConverted into YAML
types that can be converted from YAMLcorresponding 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 repr function is for debugging purposes only, and its output is not guaranteed to be stable across Typst versions.