Class: Mash
Overview
Direct Known Subclasses
Class Method Summary collapse
-
.from_hash(hash) ⇒ Mash
The input Hash’s default value is maintained.
Instance Method Summary collapse
- #[]=(key, value) ⇒ Object
- #default(key = nil) ⇒ Object
- #delete(key) ⇒ Object
-
#except(*keys) ⇒ Mash
A new mash without the selected keys.
-
#fetch(key, *extras) ⇒ Object
The value at key or the default value.
-
#initialize(constructor = {}) ⇒ Mash
constructor
A new instance of Mash.
-
#initialize_copy(orig) ⇒ Object
A new copied Mash.
-
#key?(key) ⇒ Boolean
(also: #include?, #has_key?, #member?)
True if the key exists in the mash.
-
#merge(hash) ⇒ Mash
A new mash with the hash values merged in.
- #regular_update ⇒ Object
- #regular_writer ⇒ Object
-
#stringify_keys! ⇒ Mash
Used to provide the same interface as Hash.
-
#symbolize_keys ⇒ Hash
The mash as a Hash with symbolized keys.
-
#to_hash ⇒ Hash
The mash as a Hash with string keys.
-
#update(other_hash) ⇒ Mash
(also: #merge!)
The updated mash.
-
#values_at(*indices) ⇒ Array
The values at each of the provided keys.
Constructor Details
#initialize(constructor = {}) ⇒ Mash
Returns a new instance of Mash.
59 60 61 62 63 64 65 66 |
# File 'lib/chef/mash.rb', line 59 def initialize(constructor = {}) if constructor.is_a?(Hash) super() update(constructor) else super(constructor) end end |
Class Method Details
Instance Method Details
#[]=(key, value) ⇒ Object
104 105 106 |
# File 'lib/chef/mash.rb', line 104 def []=(key, value) regular_writer(convert_key(key), convert_value(value)) end |
#default(key = nil) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/chef/mash.rb', line 87 def default(key = nil) if key.is_a?(Symbol) && include?(key = key.to_s) self[key] else super end end |
#delete(key) ⇒ Object
157 158 159 |
# File 'lib/chef/mash.rb', line 157 def delete(key) super(convert_key(key)) end |
#except(*keys) ⇒ Mash
Returns A new mash without the selected keys.
168 169 170 |
# File 'lib/chef/mash.rb', line 168 def except(*keys) super(*keys.map {|k| convert_key(k)}) end |
#fetch(key, *extras) ⇒ Object
Returns The value at key or the default value.
136 137 138 |
# File 'lib/chef/mash.rb', line 136 def fetch(key, *extras) super(convert_key(key), *extras) end |
#initialize_copy(orig) ⇒ Object
Returns A new copied Mash.
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/chef/mash.rb', line 71 def initialize_copy(orig) super # Handle nested values each do |k,v| if v.kind_of?(Mash) || v.is_a?(Array) self[k] = v.dup end end self end |
#key?(key) ⇒ Boolean Also known as: include?, has_key?, member?
Returns True if the key exists in the mash.
123 124 125 |
# File 'lib/chef/mash.rb', line 123 def key?(key) super(convert_key(key)) end |
#merge(hash) ⇒ Mash
Returns A new mash with the hash values merged in.
151 152 153 |
# File 'lib/chef/mash.rb', line 151 def merge(hash) self.dup.update(hash) end |
#regular_update ⇒ Object
96 |
# File 'lib/chef/mash.rb', line 96 alias_method :regular_update, :update |
#regular_writer ⇒ Object
95 |
# File 'lib/chef/mash.rb', line 95 alias_method :regular_writer, :[]= |
#stringify_keys! ⇒ Mash
Used to provide the same interface as Hash.
175 |
# File 'lib/chef/mash.rb', line 175 def stringify_keys!; self end |
#symbolize_keys ⇒ Hash
Returns The mash as a Hash with symbolized keys.
178 179 180 181 182 |
# File 'lib/chef/mash.rb', line 178 def symbolize_keys h = Hash.new(default) each { |key, val| h[key.to_sym] = val } h end |
#to_hash ⇒ Hash
Returns The mash as a Hash with string keys.
185 186 187 |
# File 'lib/chef/mash.rb', line 185 def to_hash Hash.new(default).merge(self) end |
#update(other_hash) ⇒ Mash Also known as: merge!
Returns The updated mash.
113 114 115 116 |
# File 'lib/chef/mash.rb', line 113 def update(other_hash) other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } self end |
#values_at(*indices) ⇒ Array
Returns The values at each of the provided keys.
144 145 146 |
# File 'lib/chef/mash.rb', line 144 def values_at(*indices) indices.collect {|key| self[convert_key(key)]} end |