Class | AWS::Core::Data |
In: |
lib/aws/core/data.rb
|
Parent: | Object |
Data is a light wrapper around a Ruby hash that provides method missing access to the hash contents.
## Method Missing Access
You can access hash content with methods if their keys are symbols.
data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true }) data.a #=> 1 data.b #=> 2 data.c #=> true data.d #=> raises NoMethodError
## Boolean Methods
Given the structure above you can also use question-mark methods.
data.c? #=> true data.d? #=> raises NoMethodError
## Nested Hashes
If the data contains nested hashes you can chain methods into the structure.
data = AWS::Core::Data.new(:a => { :b => { :c => 'abc' }}) data.a.b.c #=> 'abc'
## Nested Arrays
Arrays are wrapped in {Data::List} objects. They ensure any data returned is correctly wrapped so you can continue using method-missing access.
data = AWS::Core::Data.new( :people => [ {:name => 'john'}, {:name => 'jane'}, ]}) data.people[0].name #=> 'john' data.people[1].name #=> 'jane' data.people.map(&:name) #=> ['john','jane']
Given a hash, this method returns a {Data} object. Given an Array, this method returns a {Data::List} object. Everything else is returned as is.
@param [Object] value The value to conditionally wrap.
@return [Data,Data::List,Object] Wraps hashes and lists with
Data and List objects, all other objects are returned as is.
Returns an inspection string from the wrapped data.
data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true }) data.inspect #=> '{:a=>1, :b=>2, :c=>true}'
@return [String]
@param [String,Symbol] method_name @return [Boolean] Returns true if this data object will
respond to the given method name.