Qore YAML Module
0.7
|
The yaml module provides YAML functionality to Qore, allowing qore programs to read and write information in YAML syntax.
This module is released under a choice of two licenses:
The module is tagged as such in the module's header (meaning it can be loaded unconditionally regardless of how the Qore library was initialized).
Like all Qore components, the yaml module is thread-safe.
The underlying YAML functionality is provided by libyaml.
User modules implementing the following HTTP-based protocols using YAML for data serialization are included:
Also included with the binary yaml module:
Function | Description |
make_yaml() | creates a YAML string from Qore data |
parse_yaml() | parses a YAML string and returns Qore data |
get_yaml_info() | returns version information about libyaml |
The following camel-case functions were deprecated in yaml 0.5:
Deprecated Function | New Function |
makeYAML() | make_yaml() |
parseYAML() | parse_yaml() |
getYAMLInfo() | get_yaml_info() |
Note that all Qore types except objects can be serialized to YAML, however NULL
will be deserialized as NOTHING
.
QoreType | YAML Tag | Qore Example | YAML Example | Notes |
int | !!int | 300 | 300 | direct serialization |
float | !!float | 3.5 | 3.5 | direct serialization; infinity is serialized as @inf@ , "not a number" as @nan@ |
number | !number | 3.5 | 3.5n{128} | String serialization in scientific notation (for brevity) with the number appended with an "n" ; the number is serialized so that no precision is lost.Infinity is serialized as @inf@n{128} , "not a number" as @nan@n{128} The precision is appended to the string in curly brackets (ex: "1.1n{128}" means the number 1.1 with 128 bits of precision)This tag is a custom tag used only by Qore to serialize Qore arbitrary-precision numeric values with YAML |
string | !!str | "hello" | "hello" | YAML strings are enclosed in double-quotes, and libyaml will perform escaping as necessary to form a proper YAML string |
bool | !!bool | True | true | direct serialization to true and false |
date (relative) | !duration | P2M3DT10H14u | P2M3DT10H14u | Relative date/time values (durations) are serialized with Qore's ISO-8601-based format. This tag is a custom tag used only by Qore to serialize Qore relative date/time values with YAML |
date (absolute) | !!timestamp | 2010-05-05T15:35 :02.100 | 2010-05-05T15:35 :02.1+02:00 | Absolute date/time values are serialized with YAML's timestamp format. Note that qore date/time values without an explicit time zone are assumed to be in the local time zone. When converting a YAML timestamp to a Qore date, because Qore supports only up to microsecond resolution in date/time values, any digits after microseconds are lost. |
NOTHING | !!null | NOTHING | null | direct serialization |
NULL | !!null or !sqlnull | NULL | null or !sqlnull | without EmitSqlNull, serialization to YAML null, just like NOTHING ; will be deserialized as NOTHING , with EmitSqlNull will be deserialized to NULL . |
list | !!seq | (1, 2, "three") | [1, 2, "three"] | direct serialization |
hash | !!map | ("key" : 1, "other" : 2.0, "data" : "three") | {key: 1, other: 2.0, data: "three"} | direct serialization, although qore will maintain key order as well even though this property is only defined for an ordered map |
"response-code"
key of the info output hash could be missing in some cases (issue 3237)DESERIALIZATION-ERROR
exception for non-deserializable message bodies from HTTP servers with error responses (issue 1033)YamlRpcConnection
class to the YamlRpcClient module"!number"
values will always include the tag to avoid potential future ambiguity (issue 2343)New Features and Bug Fixes
!!timestamp
type) are now always returned in the current time zone locale so that time zone rules can be applied to deserialized dates; previously time zone information was always lost which could cause errors when performing date arithmetic on deserialized yaml datesNew Features and Bug Fixes
"P"
and then deserialized as a string; now they are serialized as "P0D"
and deserialized correctly as a zero-length durationNew Features and Bug Fixes
@nan@
, inf as @inf@
)New Features and Bug Fixes