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.

Defined in:

yaml.cr

Instance Method Summary

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 [](path : Enumerable) : YAML::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) #

Sets the value of key to the given value.


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

Sets the value of key to the given value.


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

Sets the value of key to the given value.


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

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


[View source]
def as_a : Array(Any) #

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


[View source]
def as_a? : Array(Any) | Nil #

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


[View source]
def as_bytes : Bytes #

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


[View source]
def as_bytes? : Bytes | Nil #

Checks that the underlying value is Bytes, and returns its value. Returns nil otherwise.


[View source]
def as_f : Float64 #

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


[View source]
def as_f32 : Float32 #

Checks that the underlying value is Float, and returns its value as an Float32. Raises otherwise.


[View source]
def as_f32? : Float32 | Nil #

Checks that the underlying value is Float, and returns its value as an Float32. Returns nil otherwise.


[View source]
def as_f? : Float64 | Nil #

Checks that the underlying value is Float64, and returns its value. Returns nil otherwise.


[View source]
def as_h? : Hash(Any, Any) | Nil #

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


[View source]
def as_i : Int32 #

Checks that the underlying value is Int64, and returns its value as Int32. Raises otherwise.


[View source]
def as_i64 : Int64 #

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


[View source]
def as_i64? : Int64 | Nil #

Checks that the underlying value is Int64, and returns its value. Returns nil otherwise.


[View source]
def as_i? : Int32 | Nil #

Checks that the underlying value is Int64, and returns its value as Int32. Returns nil 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 as_s? : String | Nil #

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


[View source]
def clone #

Returns a new YAML::Any instance with the raw value #cloneed.


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

Deletes the element corresponding to the path.


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

Deletes the key-value pair.


[View source]
def delete(index : Int) #

Deletes the element at the given index.


[View source]
def delete(path : Enumerable) : YAML::Any #

Removes the element corresponding to the path.


[View source]
def dup #

Returns a new YAML::Any instance with the raw value #duped.


[View source]
def hash(hasher) #

See Object#hash(hasher)