struct

YAML::Any

Inherits Dynany < Struct < Value < Object

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

require "yaml"

data = YAML.parse <<-YAML
         ---
         foo:
           bar:
             baz:
               - qux
               - fox
         YAML
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. There are also nil-able variants (#as_i?, #as_s?, ...), which return nil when the underlying value type won't match.

Instance methods

[](path : Enumerable) : T::Any

Returns the value corresponding to the path. If not found, raise.

Source
[]=(path : Enumerable(String | Int32 | Int64), value) : YAML::Any

Sets the value of the element corresponding to the path.

Source
[]=(key : Any, value : Any) : YAML::Any

Sets the value of key to the given value.

Source
[]?(path : Enumerable) : T::Any | Nil

Returns the value corresponding to the path. If not found, returns nil.

Source
delete(path : Enumerable(String | Int32 | Int64)) : YAML::Any

Deletes the element corresponding to the path.

Source
delete(key : Any) : YAML::Any | Nil

Deletes the key-value pair.

Source