struct YAML::Any

Overview

YAML::Any is a convenient wrapper around all possible YAML types (YAML::Type) and can be used for traversing dynamic or unknown YAML structures.

require "yaml"

data = YAML.parse <<-END
         ---
         foo:
           bar:
             baz:
               - qux
               - fox
         END
data["foo"]["bar"]["baz"][0].as_s # => "qux"
data["foo"]["bar"]["baz"].as_a    # => ["qux", "fox"]

Note that methods used to traverse a YAML structure, #[], #[]? and #each, always return a YAML::Any to allow further traversal. To convert them to String, Array, etc., use the as_ methods, such as #as_s, #as_a, which perform a type check against the raw underlying value. This means that invoking #as_s when the underlying value is not a String will raise: the value won't automatically be converted (parsed) to a String.

Included Modules

Defined in:

yaml/any.cr

Constructors

Instance Method Summary

Instance methods inherited from module Enumerable(self)

all?(&block)
all?
all?
, any?(&block)
any?
any?
, chunks(&block : T -> U) forall U chunks, compact_map(&block) compact_map, count(&block)
count(item)
count
, cycle(n, &block)
cycle(&block)
cycle
, each(&block : T -> _) each, each_cons(count : Int, reuse = false, &block) each_cons, each_slice(count : Int, reuse = false, &block) each_slice, each_with_index(offset = 0, &block) each_with_index, each_with_object(obj, &block) each_with_object, find(if_none = nil, &block) find, first(count : Int)
first
first
, first? first?, flat_map(&block : T -> Array(U) | Iterator(U) | U) forall U flat_map, grep(pattern) grep, group_by(&block : T -> U) forall U group_by, in_groups_of(size : Int, filled_up_with : U = nil) forall U
in_groups_of(size : Int, filled_up_with : U = nil, reuse = false, &block) forall U
in_groups_of
, includes?(obj) includes?, index(&block)
index(obj)
index
, index_by(&block : T -> U) forall U index_by, join(separator, io)
join(separator = "")
join(separator, io, &block)
join(separator = "", &block)
join
, map(&block : T -> U) forall U map, map_with_index(&block : T, Int32 -> U) forall U map_with_index, max max, max? max?, max_by(&block : T -> U) forall U max_by, max_by?(&block : T -> U) forall U max_by?, max_of(&block : T -> U) forall U max_of, max_of?(&block : T -> U) forall U max_of?, min min, min? min?, min_by(&block : T -> U) forall U min_by, min_by?(&block : T -> U) forall U min_by?, min_of(&block : T -> U) forall U min_of, min_of?(&block : T -> U) forall U min_of?, minmax minmax, minmax? minmax?, minmax_by(&block : T -> U) forall U minmax_by, minmax_by?(&block : T -> U) forall U minmax_by?, minmax_of(&block : T -> U) forall U minmax_of, minmax_of?(&block : T -> U) forall U minmax_of?, none?(&block)
none?
none?
, one?(&block) one?, partition(&block) partition, product(&block)
product(initial : Number, &block)
product
product(initial : Number)
product
, reduce(&block)
reduce(memo, &block)
reduce
, reject(&block : T -> ) reject, select(&block : T -> ) select, size size, skip(count : Int) skip, skip_while(&block) skip_while, sum(initial)
sum
sum(initial, &block)
sum(&block)
sum
, take_while(&block) take_while, to_a to_a, to_h to_h, to_set to_set

Instance methods inherited from struct Struct

==(other : self) : Bool ==, hash : Int32 hash, inspect(io : IO) : Nil inspect, pretty_print(pp) : Nil pretty_print, to_s(io) to_s

Instance methods inherited from struct Value

==(other) ==, dup dup

Instance methods inherited from class Object

!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect
inspect
, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json
to_json
, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ")
to_pretty_json
, to_s
to_s(io : IO)
to_s
, to_yaml(io : IO)
to_yaml
to_yaml
, try(&block) try, unsafe_as(type : T.class) forall T unsafe_as

Constructor methods inherited from class Object

from_json(string_or_io, root : String) : self
from_json(string_or_io) : self
from_json
, from_yaml(string_or_io) : self from_yaml

Constructor Detail

def self.new(pull : YAML::PullParser) #

Reads a YAML::Any value from the given pull parser.


View source
def self.new(raw : YAML::Type) #

Creates a YAML::Any that wraps the given YAML::Type.


View source

Instance Method Detail

def ==(other : YAML::Any) #

Returns true if both self and other's raw object are equal.


View source
def ==(other) #

Returns true if the raw object is equal to other.


View source
def [](index : Int) : YAML::Any #

Assumes the underlying value is an Array and returns the element at the given index.

Raises if the underlying value is not an Array.


View source
def [](key : String) : YAML::Any #

Assumes the underlying value is a Hash and returns the element with the given key.

Raises if the underlying value is not a Hash.


View source
def []?(index : Int) : YAML::Any? #

Assumes the underlying value is an Array and returns the element at the given index, or nil if out of bounds.

Raises if the underlying value is not an Array.


View source
def []?(key : String) : YAML::Any? #

Assumes the underlying value is a Hash and returns the element with the given key, or nil if the key is not present.

Raises if the underlying value is not a Hash.


View source
def as_a : Array(Type) #

Checks that the underlying value is Array, and returns its value. Raises otherwise.


View source
def as_h : Hash(Type, Type) #

Checks that the underlying value is Hash, and returns its value. Raises otherwise.


View source
def as_nil : Nil #

Checks that the underlying value is Nil, and returns nil. Raises otherwise.


View source
def as_s : String #

Checks that the underlying value is String, and returns its value. Raises otherwise.


View source
def each(&block) #

Assumes the underlying value is an Array or Hash and yields each of the elements or key/values, always as YAML::Any.

Raises if the underlying value is not an Array or Hash.


View source
def raw : YAML::Type #

Returns the raw underlying value, a YAML::Type.


View source
def size : Int #

Assumes the underlying value is an Array or Hash and returns its size.

Raises if the underlying value is not an Array or Hash.


View source