class YAML::Nodes::Builder

Overview

Builds a tree of YAML nodes.

This builder is similar to YAML::Builder, but instead of directly emitting the output to an IO it builds a YAML document tree in memory.

All "emitting" methods support specifying a "reference" object that will be associated to the emitted object, so that when that reference object is emitted again an anchor and an alias will be created. This generates both more compact documents and allows handling recursive data structures.

Defined in:

yaml/nodes/builder.cr

Constructors

Instance Method Summary

Instance methods inherited from class Reference

==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other)
==
, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil)
same?
, to_s(io : IO) : Nil to_s

Constructor methods inherited from class Reference

new new

Instance methods inherited from class Object

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash
hash
, in?(collection : Object) : Bool
in?(*values : Object) : Bool
in?
, inspect(io : IO) : Nil
inspect : String
inspect
, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil!
not_nil!
, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String
to_json
, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil
to_pretty_json
, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(io : IO) : Nil
to_yaml : String
to_yaml
, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

Class methods inherited from class Object

from_json(string_or_io, root : String)
from_json(string_or_io)
from_json
, from_yaml(string_or_io : String | IO) from_yaml

Constructor Detail

def self.new #

[View source]

Instance Method Detail

def alias(anchor : String) : Nil #

Emits an alias to the given anchor.

require "yaml"

nodes_builder = YAML::Nodes::Builder.new

nodes_builder.mapping do
  nodes_builder.scalar "foo"
  nodes_builder.alias "key"
end

yaml = YAML.build do |builder|
  nodes_builder.document.to_yaml builder
end

yaml # => "---\nfoo: *key\n"

[View source]
def document : Document #

The document this builder builds.


[View source]
def mapping(anchor : String | Nil = nil, tag : String | Nil = nil, style : YAML::MappingStyle = YAML::MappingStyle::ANY, reference = nil, &) : Nil #

[View source]
def merge(anchor : String) : Nil #

Emits the scalar "<<" followed by an alias to the given anchor.

See YAML Merge.

require "yaml"

nodes_builder = YAML::Nodes::Builder.new

nodes_builder.mapping do
  nodes_builder.merge "key"
end

yaml = YAML.build do |builder|
  nodes_builder.document.to_yaml builder
end

yaml # => "---\n<<: *key\n"

[View source]
def scalar(value, anchor : String | Nil = nil, tag : String | Nil = nil, style : YAML::ScalarStyle = YAML::ScalarStyle::ANY, reference = nil) : Nil #

[View source]
def sequence(anchor : String | Nil = nil, tag : String | Nil = nil, style : YAML::SequenceStyle = YAML::SequenceStyle::ANY, reference = nil, &) : Nil #

[View source]