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/any.crConstructors
- .new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
- .new(raw : Type)
- .new(raw : Int)
- .new(raw : Float)
Instance Method Summary
-
#==(other : YAML::Any)
Returns
true
if bothself
and other's raw object are equal. -
#==(other)
Returns
true
if the raw object is equal to other. - #[](index_or_key) : YAML::Any
- #[]?(index_or_key) : YAML::Any | Nil
-
#as_a : Array(YAML::Any)
Checks that the underlying value is
Array
, and returns its value. -
#as_a? : Array(YAML::Any) | Nil
Checks that the underlying value is
Array
, and returns its value. -
#as_bool : Bool
Checks that the underlying value is
Bool
, and returns its value. -
#as_bool? : Bool | Nil
Checks that the underlying value is
Bool
, and returns its value. -
#as_bytes : Bytes
Checks that the underlying value is
Bytes
, and returns its value. -
#as_bytes? : Bytes | Nil
Checks that the underlying value is
Bytes
, and returns its value. - #as_f : Float64
- #as_f32 : Float32
- #as_f32? : Float32 | Nil
- #as_f? : Float64 | Nil
-
#as_h : Hash(YAML::Any, YAML::Any)
Checks that the underlying value is
Hash
, and returns its value. -
#as_h? : Hash(YAML::Any, YAML::Any) | Nil
Checks that the underlying value is
Hash
, and returns its value. - #as_i : Int32
-
#as_i64 : Int64
Checks that the underlying value is
Int64
, and returns its value. -
#as_i64? : Int64 | Nil
Checks that the underlying value is
Int64
, and returns its value. - #as_i? : Int32 | Nil
-
#as_nil : Nil
Checks that the underlying value is
Nil
, and returnsnil
. -
#as_s : String
Checks that the underlying value is
String
, and returns its value. -
#as_s? : String | Nil
Checks that the underlying value is
String
, and returns its value. -
#as_time : Time
Checks that the underlying value is
Time
, and returns its value. -
#as_time? : Time | Nil
Checks that the underlying value is
Time
, and returns its value. - #clone
-
#dig(index_or_key, *subkeys) : YAML::Any
Traverses the depth of a structure and returns the value, otherwise raises.
-
#dig?(index_or_key, *subkeys) : YAML::Any | Nil
Traverses the depth of a structure and returns the value.
- #dup
- #hash(hasher)
-
#inspect(io : IO) : Nil
Appends this struct's name and instance variables names and values to the given IO.
-
#raw : Type
Returns the raw underlying value, a
Type
. - #size : Int
- #to_json(builder : JSON::Builder) : Nil
-
#to_json_object_key : String
Forwards
#to_json_object_key
to#raw
if it responds to that method, raisesJSON::Error
otherwise. -
#to_s(io : IO) : Nil
Same as
#inspect(io)
.
Instance methods inherited from struct Struct
==(other) : Bool
==,
hash(hasher)
hash,
inspect(io : IO) : Nil
inspect,
pretty_print(pp) : Nil
pretty_print,
to_s(io : IO) : Nil
to_s
Instance methods inherited from struct Value
==(other : JSON::Any)==(other : YAML::Any)
==(other) ==, dup dup
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
Instance Method Detail
Returns true
if both self
and other's raw object are equal.
Assumes the underlying value is an Array
or Hash
and returns the element
at the given index_or_key, or nil
if out of bounds or the key is missing.
Checks that the underlying value is Array
, and returns its value.
Raises otherwise.
Checks that the underlying value is Array
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Bool
, and returns its value.
Raises otherwise.
Checks that the underlying value is Bool
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Bytes
, and returns its value.
Raises otherwise.
Checks that the underlying value is Bytes
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Float
(or Int
), and returns its value as an Float32
.
Raises otherwise.
Checks that the underlying value is Float
(or Int
), and returns its value as an Float32
.
Returns nil
otherwise.
Checks that the underlying value is Hash
, and returns its value.
Raises otherwise.
Checks that the underlying value is Hash
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Int64
, and returns its value.
Raises otherwise.
Checks that the underlying value is Int64
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Nil
, and returns nil
.
Raises otherwise.
Checks that the underlying value is String
, and returns its value.
Raises otherwise.
Checks that the underlying value is String
, and returns its value.
Returns nil
otherwise.
Checks that the underlying value is Time
, and returns its value.
Raises otherwise.
Checks that the underlying value is Time
, and returns its value.
Returns nil
otherwise.
Traverses the depth of a structure and returns the value, otherwise raises.
Traverses the depth of a structure and returns the value.
Returns nil
if not found.
Appends this struct's name and instance variables names and values to the given IO.
struct Point
def initialize(@x : Int32, @y : Int32)
end
end
p1 = Point.new 1, 2
p1.to_s # "Point(@x=1, @y=2)"
p1.inspect # "Point(@x=1, @y=2)"
Forwards #to_json_object_key
to #raw
if it responds to that method,
raises JSON::Error
otherwise.