Use yaml.load
to load a YAML string. For files and connections, use
yaml.load_file
, which calls yaml.load
with the contents of the specified
file or connection.
Sequences of uniform data (e.g. a sequence of integers) are converted into vectors. If
the sequence is not uniform, it's returned as a list. Maps are converted into named lists
by default, and all the keys in the map are converted to strings. If you don't want the
keys to be coerced into strings, set as.named.list
to FALSE. When it's FALSE, a
list will be returned with an additional attribute named 'keys', which is a list of the
un-coerced keys in the map (in the same order as the main list).
You can specify custom handler functions via the handlers
argument. This argument
must be a named list of functions, where the names are the YAML types (i.e., 'int', 'float',
'seq', etc). The functions you provide will be passed one argument. Custom
handler functions for string types (all types except sequence and map) will receive a
character vector of length 1. Custom sequence functions will be passed a list of objects.
Custom map functions will be passed the object that the internal map handler creates, which
is either a named list or a list with a 'keys' attribute (depending on as.named.list
).
ALL functions you provide must return an object. See the examples for custom handler use.
You can specify a label to be prepended to error messages via the
error.label
argument. When using yaml.load_file
, you can
either set the error.label
argument explicitly or leave it missing.
If missing, yaml.load_file
will make an educated guess for the value
of error.label
by either using the specified filename (when
input
is a character vector) or using the description of the supplied
connection object (via the summary
function). You can explicity set
error.label
to NULL
if you don't want to use this functionality.
There is a built-in handler that will evaluate expressions that are tagged
with the ‘!expr’ tag. Currently this handler is disabled by default
for security reasons. If a ‘!expr’ tag exists and this is set to
FALSE a warning will occur. Alternately, you can set the option named
‘yaml.eval.expr’ via the options
function to turn on
evaluation.
The merge.precedence
parameter controls how merge keys are handled.
The YAML merge key specification is not specific about how key/value
conflicts are resolved during map merges. As a result, various YAML library
implementations vary in merge key behavior (notably Python and Ruby). This
package's default behavior (when merge.precedence
is ‘order’)
is to give precedence to key/value pairs that appear first. If you set
merge.precedence
to ‘override’, natural map key/value pairs
will override any duplicate keys found in merged maps, regardless of order.
This is the default behavior in Python's YAML library.
This function uses the YAML parser provided by libyaml, which conforms to the YAML 1.1
specification.