struct YAML::Any

Overview

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.

Included Modules

Defined in:

yaml.cr

Instance Method Summary

Instance methods inherited from module Dynany(YAML)

[]=(key : Int, value : T::Any)
[]=(path : Enumerable, value : T::Any) : T::Any
[]=
, delete(index : Int) : T::Any | Nil
delete(key : String) : T::Any | Nil
delete(path : Enumerable) : T::Any
delete

Instance Method Detail

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

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


[View source]
def []=(path : Enumerable(String | Int32 | Int64), value) : YAML::Any #

Sets the value of the element corresponding to the path.


[View source]
def []=(key : Any, value : Any) : YAML::Any #

Sets the value of key to the given value.


[View source]
def []?(path : Enumerable) : T::Any | Nil #

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


[View source]
def delete(path : Enumerable(String | Int32 | Int64)) : YAML::Any #

Deletes the element corresponding to the path.


[View source]
def delete(key : Any) : YAML::Any | Nil #

Deletes the key-value pair.


[View source]