- Documentation
- Reference manual
- Packages
- Google's Protocol Buffers Library
- SWI-Prolog SSL Interface
- SWI-Prolog HTTP support
- Paxos -- a SWI-Prolog replicating key-value store
- SWI-Prolog Semantic Web Library 3.0
- SWI-Prolog Source Documentation Version 2
- SWI-Prolog Regular Expression library
- SWI-Prolog YAML library
- Managing external tables for SWI-Prolog
- SWI-Prolog ODBC Interface
- A C++ interface to SWI-Prolog
- SWI-Prolog RDF parser
- SWI-Prolog binding to BSD libedit
- SWI-Prolog C-library
- Redis -- a SWI-Prolog client for redis
- SWI-Prolog Natural Language Processing Primitives
- SWI-Prolog binding to GNU readline
- SWI-Prolog binding to zlib
- SWI-Prolog binding to libarchive
- Transparent Inter-Process Communications (TIPC) libraries
- Constraint Query Language A high level interface to SQL databases
- Pengines: Web Logic Programming Made Easy
- SWI-Prolog SGML/XML parser
- Prolog Unit Tests
- SWI-Prolog Unicode library
SWI-Prolog YAML library
Abstract
This package reads and writes
YAML documents from and to SWI-Prolog streams, files and strings. It is
based on
libyaml. This
C library is being used by several languages. Using this C library
provides good performance, and interoperability with YALM infrastructure
used by other systems.Table of Contents
1 library(yaml): Process YAML data
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),
null
and the booleanstrue
andfalse
. Other untagged values are returned as a Prolog string. Tagged values are returned astag(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:!!binary
converts the Base64 to a string of bytes.!!str
explicitly keeps a string!!null
translates "null" tonull
!!bool
translates totrue
andfalse
!!int
translates to an integer!!float
translates to a float- Anything else is returned as
tag(Tag, String)
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
stream
Out. Options processed are:
- canonical(+Boolean)
- Use canonical representation. Default is
false
. - unicode(+Boolean)
- Use unicode Default is
true
. - implicit(+Boolean)
- Use implicit or explicit representation. Currently only affects the
opening and closing the document. Default is
true
. Usefalse
for embedded documents. - factorize(+Boolean)
- If
true
, minimize the term by factoring out common structures and use&anchor
and*anchor
. Factorization is always used if DOM is a cyclic term.
- [semidet,multifile]tagged(+Tag, ?String, ?Value)
- Hook that allows convering
!!tag
values to be decoded or encoded.