Class: Mash
- Inherits:
-
Hash
- Object
- Hash
- Mash
- Defined in:
- lib/chef/mash.rb
Overview
Direct Known Subclasses
Chef::CookbookCollection, Chef::Node::Attribute, Chef::Node::ImmutableMash, Chef::Node::VividMash
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.
-
#internal_set(key, value) ⇒ Object
private
internal API for use by Chef’s deep merge cache.
-
#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
163 164 165 |
# File 'lib/chef/mash.rb', line 163 def delete(key) super(convert_key(key)) end |
#except(*keys) ⇒ Mash
Returns A new mash without the selected keys.
174 175 176 |
# File 'lib/chef/mash.rb', line 174 def except(*keys) super(*keys.map { |k| convert_key(k) }) end |
#fetch(key, *extras) ⇒ Object
Returns The value at key or the default value.
142 143 144 |
# File 'lib/chef/mash.rb', line 142 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 |
#internal_set(key, value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
internal API for use by Chef’s deep merge cache
110 111 112 |
# File 'lib/chef/mash.rb', line 110 def internal_set(key, value) regular_writer(key, convert_value(value)) end |
#key?(key) ⇒ Boolean Also known as: include?, has_key?, member?
Returns True if the key exists in the mash.
129 130 131 |
# File 'lib/chef/mash.rb', line 129 def key?(key) super(convert_key(key)) end |
#merge(hash) ⇒ Mash
Returns A new mash with the hash values merged in.
157 158 159 |
# File 'lib/chef/mash.rb', line 157 def merge(hash) 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.
181 |
# File 'lib/chef/mash.rb', line 181 def stringify_keys!; self end |
#symbolize_keys ⇒ Hash
Returns The mash as a Hash with symbolized keys.
184 185 186 187 188 |
# File 'lib/chef/mash.rb', line 184 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.
191 192 193 |
# File 'lib/chef/mash.rb', line 191 def to_hash Hash.new(default).merge(self) end |
#update(other_hash) ⇒ Mash Also known as: merge!
Returns The updated mash.
119 120 121 122 |
# File 'lib/chef/mash.rb', line 119 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.
150 151 152 |
# File 'lib/chef/mash.rb', line 150 def values_at(*indices) indices.collect { |key| self[convert_key(key)] } end |