Module yaml
-
Imports
-
Types
Type Hint Yaml Stream Event Kind Tag Id Anchor Id Yaml Stream Event Yaml Stream Tag Library Warning Callback Yaml Parser Presentation Style Tag Style Anchor Style Construction Context Serialization Context Raw Yaml Stream Yaml Loading Error Yaml Parser Error Yaml Presenter Json Error Yaml Presenter Output Error Yaml Stream Error Yaml Construction Error
- Vars
-
Consts
y Tag Exclamation Mark y Tag Question Mark y Tag String y Tag Sequence y Tag Map y Tag Null y Tag Boolean y Tag Integer y Tag Float y Tag Ordered Map y Tag Pairs y Tag Set y Tag Binary y Tag Merge y Tag Timestamp y Tag Value y Tag Yaml y First Custom Tag Id y Anchor None yaml Tag Repository Prefix y Tag Nim Int8 y Tag Nim Int16 y Tag Nim Int32 y Tag Nim Int64 y Tag Nim UInt8 y Tag Nim UInt16 y Tag Nim UInt32 y Tag Nim UInt64 y Tag Nim Float32 y Tag Nim Float64 y Tag Nim Char
-
Procs
`==` hash `==` `$` hash `$` init Tag Library register Uri uri init Failsafe Tag Library init Core Tag Library init Extended Tag Library `==` `$` start Doc Event end Doc Event start Map Event end Map Event start Seq Event end Seq Event scalar Event alias Event construct Json load To Json present transform guess Type new Yaml Parser get Line Number get Col Number get Line Content parse init Yaml Stream next peek peek= finished lazy Load Tag safe Tag Uri yaml Tag construct Object represent Object yaml Tag yaml Tag yaml Tag yaml Tag construct Object represent Object yaml Tag yaml Tag yaml Tag yaml Tag construct Object represent Object yaml Tag yaml Tag construct Object represent Object yaml Tag construct Object represent Object yaml Tag construct Object represent Object yaml Tag construct Object represent Object yaml Tag construct Object represent Object construct Object construct Object represent Object construct Object represent Object yaml Tag construct Object represent Object construct load represent dump
- Iterators
- Macros
- Templates
This module provides facilities to generate and interpret YAML character streams. All primitive operations on data objects use a YamlStream either as source or as output. Because this stream is implemented as iterator, it is possible to process YAML input and output sequentially, i.e. without loading the processed data structure completely into RAM. This supports the processing of large data structures.
As YAML is a strict superset of JSON, JSON input is automatically supported. While JSON is less readable than YAML, this enhances interoperability with other languages.
Imports
Types
TypeHint = enum yTypeInteger, yTypeFloat, yTypeFloatInf, yTypeFloatNaN, yTypeBoolTrue, yTypeBoolFalse, yTypeNull, yTypeUnknown
-
A type hint can be computed from scalar content and tells you what NimYAML thinks the scalar's type is. It is generated by guessType The first matching RegEx in the following table will be the type hint of a scalar string.
You can use it to determine the type of YAML scalars that have a '?' non-specific tag, but using this feature is completely optional.
SourceName RegEx yTypeInteger 0 | -? [1-9] [0-9]* yTypeFloat -? [1-9] ( \. [0-9]* [1-9] )? ( e [-+] [1-9] [0-9]* )? yTypeFloatInf -? \. (inf | Inf | INF) yTypeFloatNaN -? \. (nan | NaN | NAN) yTypeBoolTrue y|Y|yes|Yes|YES|true|True|TRUE|on|On|ON yTypeBoolFalse n|N|no|No|NO|false|False|FALSE|off|Off|OFF yTypeNull ~ | null | Null | NULL yTypeUnknown * YamlStreamEventKind = enum yamlStartDocument, yamlEndDocument, yamlStartMap, yamlEndMap, yamlStartSequence, yamlEndSequence, yamlScalar, yamlAlias
- Kinds of YAML events that may occur in an YamlStream. Event kinds are discussed in YamlStreamEvent. Source
TagId = distinct int
-
A TagId identifies a tag URI, like for example "tag:yaml.org,2002:str". The URI corresponding to a TagId can be queried from the TagLibrary which was used to create this TagId; e.g. when you parse a YAML character stream, the TagLibrary of the parser is the one which generates the resulting TagId s.
URI strings are mapped to TagId s for efficiency reasons (you do not need to compare strings every time) and to be able to discover unknown tag URIs early in the parsing process.
Source AnchorId = distinct int
- An AnchorId identifies an anchor in the current document. It becomes invalid as soon as the current document scope is invalidated (for example, because the parser yielded a yamlEndDocument event). AnchorId s exists because of efficiency, much like TagId s. The actual anchor name is a presentation detail and cannot be queried by the user. Source
YamlStreamEvent = object case kind*: YamlStreamEventKind of yamlStartMap: mapAnchor*: AnchorId mapTag*: TagId of yamlStartSequence: seqAnchor*: AnchorId seqTag*: TagId of yamlScalar: scalarAnchor*: AnchorId scalarTag*: TagId scalarContent*: string of yamlEndMap, yamlEndSequence, yamlStartDocument, yamlEndDocument: nil of yamlAlias: aliasTarget*: AnchorId
-
An element from a YamlStream. Events that start an object (yamlStartMap, yamlStartSequence, yamlScalar) have an optional anchor and a tag associated with them. The anchor will be set to yAnchorNone if it doesn't exist.
A non-existing tag in the YAML character stream will be resolved to the non-specific tags ? or ! according to the YAML specification. These are by convention mapped to the TagId s yTagQuestionMark and yTagExclamationMark respectively. Mapping is done by a TagLibrary.
Source YamlStream = object backend: iterator (): YamlStreamEvent peeked: bool cached: YamlStreamEvent
-
A YamlStream is an iterator-like object that yields a well-formed stream of YamlStreamEvents. Well-formed means that every yamlStartMap is terminated by a yamlEndMap, every yamlStartSequence is terminated by a yamlEndSequence and every yamlStartDocument is terminated by a yamlEndDocument. Moreover, every emitted map has an even number of children.
The creator of a YamlStream is responsible for it being well-formed. A user of the stream may assume that it is well-formed and is not required to check for it. The procs in this module will always yield a well-formed YamlStream and expect it to be well-formed if it's an input.
Source TagLibrary = ref object tags*: Table[string, TagId] nextCustomTagId*: TagId secondaryPrefix*: string
-
A TagLibrary maps tag URIs to TagId s.
When YamlParser encounters tags not existing in the tag library, it will use registerTagUri to add the tag to the library.
You can base your tag library on common tag libraries by initializing them with initFailsafeTagLibrary, initCoreTagLibrary or initExtendedTagLibrary.
Source WarningCallback = proc (line, column: int; lineContent: string; message: string)
-
Callback for parser warnings. Currently, this callback may be called on two occasions while parsing a YAML document stream:
- If the version number in the %YAML directive does not match 1.2.
- If there is an unknown directive encountered.
YamlParser = ref object tagLib: TagLibrary anchors: OrderedTable[string, AnchorId] callback: WarningCallback lexer: BaseLexer tokenstart: int
- A parser object. Retains its TagLibrary across calls to parse. Can be used to access anchor names while parsing a YAML character stream, but only until the document goes out of scope (i.e. until yamlEndDocument is yielded). Source
PresentationStyle = enum psMinimal, psCanonical, psDefault, psJson, psBlockOnly
-
Different styles for YAML character stream output.
- ypsMinimal: Single-line flow-only output which tries to use as few characters as possible.
- ypsCanonical: Canonical YAML output. Writes all tags except for the non-specific tags ? and !, uses flow style, quotes all string scalars.
- ypsDefault: Tries to be as human-readable as possible. Uses block style by default, but tries to condense maps and sequences which only contain scalar nodes into a single line using flow style.
- ypsJson: Omits the %YAML directive and the --- marker. Uses flow style. Flattens anchors and aliases, omits tags. Output will be parseable as JSON. YamlStream to dump may only contain one document.
- ypsBlockOnly: Formats all output in block style, does not use flow style at all.
TagStyle = enum tsNone, tsRootOnly, tsAll
-
Whether object should be serialized with explicit tags.
- tsNone: No tags will be outputted unless necessary.
- tsRootOnly: A tag will only be outputted for the root tag and
- where necessary.
- tsAll: Tags will be outputted for every object.
AnchorStyle = enum asNone, asTidy, asAlways
-
How ref object should be serialized.
- asNone: No anchors will be outputted. Values present at
- multiple places in the content that should be serialized will be fully serialized at every occurence. If the content is cyclic, this will lead to an endless loop!
- asTidy: Anchors will only be generated for objects that
- actually occur more than once in the content to be serialized. This is a bit slower and needs more memory than asAlways.
- asAlways: Achors will be generated for every ref object in the
- content to be serialized, regardless of whether the object is referenced again afterwards
ConstructionContext = ref object refs: Table[AnchorId, pointer]
- Context information for the process of constructing Nim values from YAML. Source
SerializationContext = ref object refsList: seq[RefNodeData] style: AnchorStyle
- Context information for the process of serializing YAML from Nim values. Source
RawYamlStream = iterator (): YamlStreamEvent {.raises: [].}
- Stream of YamlStreamEvent``s returned by ``representObject procs. Source
YamlLoadingError = object of Exception line*: int ## line number (1-based) where the error was encountered column*: int ## \ ## column number (1-based) where the error was encountered lineContent*: string ## \ ## content of the line where the error was encountered. Includes a ## second line with a marker ``^`` at the position where the error ## was encountered.
- Base class for all exceptions that may be raised during the process of loading a YAML character stream. Source
YamlParserError = object of YamlLoadingError
-
A parser error is raised if the character stream that is parsed is not a valid YAML character stream. This stream cannot and will not be parsed wholly nor partially and all events that have been emitted by the YamlStream the parser provides should be discarded.
A character stream is invalid YAML if and only if at least one of the following conditions apply:
- There are invalid characters in an element whose contents is restricted to a limited set of characters. For example, there are characters in a tag URI which are not valid URI characters.
- An element has invalid indentation. This can happen for example if a block list element indicated by "- " is less indented than the element in the previous line, but there is no block sequence list open at the same indentation level.
- The YAML structure is invalid. For example, an explicit block map indicated by "? " and ": " may not suddenly have a block sequence item ("- ") at the same indentation level. Another possible violation is closing a flow style object with the wrong closing character (}, ]) or not closing it at all.
- A custom tag shorthand is used that has not previously been declared with a %TAG directive.
- Multiple tags or anchors are defined for the same node.
- An alias is used which does not map to any anchor that has previously been declared in the same document.
- An alias has a tag or anchor associated with it.
Some elements in this list are vague. For a detailed description of a valid YAML character stream, see the YAML specification.
Source YamlPresenterJsonError = object of Exception
-
Exception that may be raised by the YAML presenter when it is instructed to output JSON, but is unable to do so. This may occur if:
- The given YamlStream contains a map which has any non-scalar type as key.
- Any float scalar bears a NaN or positive/negative infinity value
YamlPresenterOutputError = object of Exception
- Exception that may be raised by the YAML presenter. This occurs if writing character data to the output stream raises any exception. The error that has occurred is available from parent. Source
YamlStreamError = object of Exception
- Exception that may be raised by a YamlStream when the underlying backend raises an exception. The error that has occurred is available from parent. Source
YamlConstructionError = object of YamlLoadingError
- Exception that may be raised when constructing data objects from a YamlStream. The fields line, column and lineContent are only available if the costructing proc also does parsing, because otherwise this information is not available to the costruction proc. Source
Vars
serializationTagLibrary = initSerializationTagLibrary()
-
contains all local tags that are used for type serialization. Does not contain any of the specific default tags for sequences or maps, as those are not suited for Nim's static type system.
Should not be modified manually. Will be extended by serializable.
Source
Consts
yTagExclamationMark: TagId = 0
- ! non-specific tag Source
yTagQuestionMark: TagId = 1
- ? non-specific tag Source
yTagString: TagId = 2
- !!str tag Source
yTagSequence: TagId = 3
- !!seq tag Source
yTagMap: TagId = 4
- !!map tag Source
yTagNull: TagId = 5
- !!null tag Source
yTagBoolean: TagId = 6
- !!bool tag Source
yTagInteger: TagId = 7
- !!int tag Source
yTagFloat: TagId = 8
- !!float tag Source
yTagOrderedMap: TagId = 9
- !!omap tag Source
yTagPairs: TagId = 10
- !!pairs tag Source
yTagSet: TagId = 11
- !!set tag Source
yTagBinary: TagId = 12
- !!binary tag Source
yTagMerge: TagId = 13
- !!merge tag Source
yTagTimestamp: TagId = 14
- !!timestamp tag Source
yTagValue: TagId = 15
- !!value tag Source
yTagYaml: TagId = 16
- !!yaml tag Source
yFirstCustomTagId: TagId = 1000
- The first TagId which should be assigned to an URI that does not exist in the YamlTagLibrary which is used for parsing. Source
yAnchorNone: AnchorId = -1
- yielded when no anchor was defined for a YAML node Source
yamlTagRepositoryPrefix = "tag:yaml.org,2002:"
- Source
yTagNimInt8 = 100
- tag for Nim's int8 Source
yTagNimInt16 = 101
- tag for Nim's int16 Source
yTagNimInt32 = 102
- tag for Nim's int32 Source
yTagNimInt64 = 103
- tag for Nim's int64 Source
yTagNimUInt8 = 104
- tag for Nim's uint8 Source
yTagNimUInt16 = 105
- tag for Nim's uint16 Source
yTagNimUInt32 = 106
- tag for Nim's uint32 Source
yTagNimUInt64 = 107
- tag for Nim's uint64 Source
yTagNimFloat32 = 108
- tag for Nim's float32 Source
yTagNimFloat64 = 109
- tag for Nim's float64 Source
yTagNimChar = 110
- tag for Nim's char Source
Procs
proc `==`(left, right: TagId): bool {.borrow.}
- Source
proc hash(id: TagId): Hash {.borrow.}
- Source
proc `==`(left, right: AnchorId): bool {.borrow.}
- Source
proc `$`(id: AnchorId): string {.borrow.}
- Source
proc hash(id: AnchorId): Hash {.borrow.}
- Source
proc `$`(id: TagId): string {.raises: [], tags: [].}
- Source
proc initTagLibrary(): TagLibrary {.raises: [], tags: [].}
- initializes the tags table and sets nextCustomTagId to yFirstCustomTagId. Source
proc registerUri(tagLib: TagLibrary; uri: string): TagId {.raises: [], tags: [].}
- registers a custom tag URI with a TagLibrary. The URI will get the TagId nextCustomTagId, which will be incremented. Source
proc uri(tagLib: TagLibrary; id: TagId): string {.raises: [KeyError], tags: [].}
- retrieve the URI a TagId maps to. Source
proc initFailsafeTagLibrary(): TagLibrary {.raises: [], tags: [].}
-
Contains only:
- !
- ?
- !!str
- !!map
- !!seq
proc initCoreTagLibrary(): TagLibrary {.raises: [], tags: [].}
-
Contains everything in initFailsafeTagLibrary plus:
- !!null
- !!bool
- !!int
- !!float
proc initExtendedTagLibrary(): TagLibrary {.raises: [], tags: [].}
-
Contains everything from initCoreTagLibrary plus:
- !!omap
- !!pairs
- !!set
- !!binary
- !!merge
- !!timestamp
- !!value
- !!yaml
proc `==`(left: YamlStreamEvent; right: YamlStreamEvent): bool {.raises: [], tags: [].}
- compares all existing fields of the given items Source
proc `$`(event: YamlStreamEvent): string {.raises: [], tags: [].}
- outputs a human-readable string describing the given event Source
proc startDocEvent(): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc endDocEvent(): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc startMapEvent(tag: TagId = yTagQuestionMark; anchor: AnchorId = yAnchorNone): YamlStreamEvent {. inline, raises: [], tags: [].}
- Source
proc endMapEvent(): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc startSeqEvent(tag: TagId = yTagQuestionMark; anchor: AnchorId = yAnchorNone): YamlStreamEvent {. inline, raises: [], tags: [].}
- Source
proc endSeqEvent(): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc scalarEvent(content: string = ""; tag: TagId = yTagQuestionMark; anchor: AnchorId = yAnchorNone): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc aliasEvent(anchor: AnchorId): YamlStreamEvent {.inline, raises: [], tags: [].}
- Source
proc constructJson(s: var YamlStream): seq[JsonNode] {. raises: [YamlConstructionError, YamlStreamError], tags: [RootEffect].}
-
Construct an in-memory JSON tree from a YAML event stream. The stream may not contain any tags apart from those in coreTagLibrary. Anchors and aliases will be resolved. Maps in the input must not contain non-scalars as keys. Each element of the result represents one document in the YAML stream.
Warning: The special float values [+-]Inf and NaN will be parsed into Nim's JSON structure without error. However, they cannot be rendered to a JSON character stream, because these values are not part of the JSON specification. Nim's JSON implementation currently does not check for these values and will output invalid JSON when rendering one of these values into a JSON character stream.
Source proc loadToJson(s: Stream): seq[JsonNode] {.raises: [IOError, YamlParserError, YamlConstructionError, OutOfMemError], tags: [RootEffect].}
- Uses YamlParser and constructJson to construct an in-memory JSON tree from a YAML character stream. Source
proc present(s: var YamlStream; target: Stream; tagLib: TagLibrary; style: PresentationStyle = psDefault; indentationStep: int = 2) {.raises: [ YamlPresenterJsonError, YamlPresenterOutputError, YamlStreamError], tags: [RootEffect, WriteIOEffect].}
- Convert s to a YAML character stream and write it to target. Source
proc transform(input: Stream; output: Stream; style: PresentationStyle; indentationStep: int = 2) {.raises: [IOError, YamlParserError, YamlPresenterJsonError, YamlPresenterOutputError, OutOfMemError], tags: [RootEffect, WriteIOEffect].}
- Parser input as YAML character stream and then dump it to output while resolving non-specific tags to the ones in the YAML core tag library. Source
proc guessType(scalar: string): TypeHint {.raises: [], tags: [].}
- Parse scalar string according to the RegEx table documented at TypeHint. Source
proc newYamlParser(tagLib: TagLibrary = initExtendedTagLibrary(); callback: WarningCallback = nil): YamlParser {.raises: [], tags: [].}
- Creates a YAML parser. if callback is not nil, it will be called whenever the parser yields a warning. Source
proc getLineNumber(p: YamlParser): int {.raises: [], tags: [].}
- Get the line number (1-based) of the recently yielded parser token. Useful for error reporting at later loading stages. Source
proc getColNumber(p: YamlParser): int {.raises: [], tags: [].}
- Get the column number (1-based) of the recently yielded parser token. Useful for error reporting at later parsing stages. Source
proc getLineContent(p: YamlParser; marker: bool = true): string {.raises: [], tags: [].}
- Get the content of the input line containing the recently yielded parser token. Useful for error reporting at later parsing stages. The line will be terminated by "\n". If marker is true, a second line will be returned containing a ^ at the position of the recent parser token. Source
proc parse(p: YamlParser; s: Stream): YamlStream {.raises: [], tags: [RootEffect, ReadIOEffect].}
- Parse the given stream as YAML character stream. Source
proc initYamlStream(backend: iterator (): YamlStreamEvent): YamlStream {.raises: [], tags: [].}
- Creates a new YamlStream that uses the given iterator as backend. Source
proc next(s: var YamlStream): YamlStreamEvent {.raises: [YamlStreamError], tags: [RootEffect].}
- Get the next item of the stream. Requires finished(s) == true. If the backend yields an exception, that exception will be encapsulated into a YamlStreamError, which will be raised. Source
proc peek(s: var YamlStream): YamlStreamEvent {.raises: [YamlStreamError], tags: [RootEffect].}
- Get the next item of the stream without advancing the stream. Requires finished(s) == true. Handles exceptions of the backend like next(). Source
proc peek=(s: var YamlStream; value: YamlStreamEvent) {.raises: [], tags: [].}
- Set the next item of the stream. Will replace a previously peeked item, if one exists. Source
proc finished(s: var YamlStream): bool {.raises: [YamlStreamError], tags: [RootEffect].}
- true if no more items are available in the stream. Handles exceptions of the backend like next(). Source
proc lazyLoadTag(uri: string): TagId {.inline, raises: [], tags: [].}
- Internal function. Do not call explicitly. Source
proc safeTagUri(id: TagId): string {.raises: [], tags: [].}
- Internal function. Do not call explicitly. Source
proc yamlTag[](T: typedesc[string]): TagId {.inline, raises: [].}
- Source
proc constructObject(s: var YamlStream; c: ConstructionContext; result: var string) {. raises: [YamlConstructionError, YamlStreamError], tags: [RootEffect].}
- Source
proc representObject(value: string; ts: TagStyle = tsNone; c: SerializationContext): RawYamlStream {. raises: [], tags: [].}
- Source
proc yamlTag[](T: typedesc[int8]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[int16]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[int32]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[int64]): TagId {.inline, raises: [].}
- Source
proc constructObject[T](s: var YamlStream; c: ConstructionContext; result: var T) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[T](value: T; ts: TagStyle = tsNone; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc yamlTag[](T: typedesc[uint8]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[uint16]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[uint32]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[uint64]): TagId {.inline, raises: [].}
- Source
proc constructObject[T](s: var YamlStream; c: ConstructionContext; result: var T) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[T](value: T; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc yamlTag[](T: typedesc[float32]): TagId {.inline, raises: [].}
- Source
proc yamlTag[](T: typedesc[float64]): TagId {.inline, raises: [].}
- Source
proc constructObject[T](s: var YamlStream; c: ConstructionContext; result: var T) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[T](value: T; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc yamlTag[](T: typedesc[bool]): TagId {.inline, raises: [].}
- Source
proc constructObject(s: var YamlStream; c: ConstructionContext; result: var bool) {. raises: [YamlConstructionError, YamlStreamError], tags: [RootEffect].}
- Source
proc representObject(value: bool; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [], tags: [].}
- Source
proc yamlTag[](T: typedesc[char]): TagId {.inline, raises: [].}
- Source
proc constructObject(s: var YamlStream; c: ConstructionContext; result: var char) {. raises: [YamlConstructionError, YamlStreamError], tags: [RootEffect].}
- Source
proc representObject(value: char; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [], tags: [].}
- Source
proc yamlTag[I, ](T: typedesc[seq[I]]): TagId {.inline, raises: [].}
- Source
proc constructObject[T](s: var YamlStream; c: ConstructionContext; result: var seq[T]) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[T](value: seq[T]; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc yamlTag[K, V, ](T: typedesc[Table[K, V]]): TagId {.inline, raises: [].}
- Source
proc constructObject[K, V](s: var YamlStream; c: ConstructionContext; result: var Table[K, V]) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[K, V](value: Table[K, V]; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc constructObject[O](s: var YamlStream; c: ConstructionContext; result: var ref O) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc constructObject[O](s: var YamlStream; c: ConstructionContext; result: var O) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[O](value: O; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc constructObject[O](s: var YamlStream; c: ConstructionContext; result: var O) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[O](value: O; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc yamlTag[O, ](T: typedesc[ref O]): TagId {.inline, raises: [].}
- Source
proc constructObject[O](s: var YamlStream; c: ConstructionContext; result: var ref O) {. raises: [YamlConstructionError, YamlStreamError].}
- Source
proc representObject[O](value: ref O; ts: TagStyle; c: SerializationContext): RawYamlStream {. raises: [].}
- Source
proc construct[T](s: var YamlStream; target: var T) {. raises: [YamlConstructionError, YamlStreamError].}
- Construct a Nim value from a YAML stream. Source
proc load[K](input: Stream; target: var K) {.raises: [YamlConstructionError, IOError, YamlParserError].}
- Load a Nim value from a YAML character stream. Source
proc represent[T](value: T; ts: TagStyle = tsRootOnly; a: AnchorStyle = asTidy): YamlStream {. raises: [].}
- Represent a Nim value as YamlStream. Source
proc dump[K](value: K; target: Stream; style: PresentationStyle = psDefault; tagStyle: TagStyle = tsRootOnly; anchorStyle: AnchorStyle = asTidy; indentationStep: int = 2) {.raises: [YamlPresenterJsonError, YamlPresenterOutputError].}
- Dump a Nim value as YAML character stream. Source
Iterators
iterator items(s: var YamlStream): YamlStreamEvent {.raises: [YamlStreamError], tags: [RootEffect].}
- Iterate over all items of the stream. You may not use peek() on the stream while iterating. Source
Macros
macro serializable(types: stmt): stmt
- Macro for customizing serialization of user-defined types. Currently does not provide more features than just using the standard serialization procs. This will change in the future. Source
Templates
template constructObject(s: var YamlStream; c: ConstructionContext; result: var int)
- Source
template representObject(value: int; tagStyle: TagStyle; c: SerializationContext): RawYamlStream
- Source
template constructObject(s: var YamlStream; c: ConstructionContext; result: var uint)
- Source
template representObject(value: uint; ts: TagStyle; c: SerializationContext): RawYamlStream
- Source
template constructObject(s: var YamlStream; c: ConstructionContext; result: var float)
- Source
template representObject(value: float; tagStyle: TagStyle; c: SerializationContext): RawYamlStream
- Source
template yamlTag[](T: typedesc[object | enum]): expr
- Source
template yamlTag[](T: typedesc[tuple]): expr
- Source