This module parses YAML serialized data into a Prolog term with
structure that is compatible with the JSON library. This library is a
wrapper around the C library
libyaml. This library forms
the basis of the YAML support in several languages and thus guarantees
compatibility of our YAML support with other languages.
- [det]yaml_read(+Input, -DOM)
- Parse Input to a YALM DOM. The DOM
representation uses the following mapping:
- A YAML sequence is mapped to a Prolog List.
- A YAML mapping is mapped to a Prolog dict.
- Untagged scalars follow the implicit tag rules defined by
YAML, providing numbers (int, float and special floats),
nulland the booleans
false. Other untagged values are returned as a Prolog string. Tagged values are returned as
tag(Tag, String)which is processed by yalm_tagged/3. This internal predicate calls the user hook yaml:tagged/3 with the same arguments and, if the hook fails, provides the following defaults:
!!binaryconverts the Base64 to a string of bytes.
!!strexplicitly keeps a string
!!nulltranslates "null" to
!!inttranslates to an integer
!!floattranslates to a float
- Anything else is returned as
Input is one of (1) a stream, (2) a term
string(Data)or (3) a file name.
- [det]yaml_write(+Out:stream, +DOM)
- [det]yaml_write(+Out:stream, +DOM, +Options)
- Emit a YAML DOM object as a serialized YAML document to the
Out. Options processed are:
- Use canonical representation. Default is
- Use unicode Default is
- Use implicit or explicit representation. Currently only affects the
opening and closing the document. Default is
falsefor embedded documents.
true, minimize the term by factoring out common structures and use
*anchor. Factorization is always used if DOM is a cyclic term.
- [semidet,multifile]tagged(+Tag, ?String, ?Value)
- Hook that allows convering
!!tagvalues to be decoded or encoded.