class ChefUtils::Mash
def self.from_hash(hash)
-
(Mash)
- Convert a Hash into a Mash
def self.from_hash(hash) mash = Mash.new(hash) mash.default = hash.default mash end
def [](key)
-
key
(Object
) -- The key to get.
def [](key) regular_reader(key) end
def []=(key, value)
- See: Mash#convert_value -
See: Mash#convert_key -
Parameters:
-
value
(Object
) -- -
key
(Object
) -- The key to set.
def []=(key, value) regular_writer(convert_key(key), convert_value(value)) end
def convert_key(key)
- Api: - private
Parameters:
-
(
Object
) -- -
key
(Object
) -- The key to convert.
def convert_key(key) key.is_a?(Symbol) ? key.to_s : key end
def convert_value(value)
- Api: - private
Returns:
-
(Object)
-
Parameters:
-
value
(Object
) -- The value to convert.
def convert_value(value) if value.class == Hash Mash.from_hash(value) elsif value.is_a?(Array) value.collect { |e| convert_value(e) } else value end end
def default(key = nil)
-
key
(Object
) -- The default value for the mash. Defaults to nil.
def default(key = nil) if key.is_a?(Symbol) && include?(key = key.to_s) self[key] else super end end
def delete(key)
-
key
(Object
) --
def delete(key) super(convert_key(key)) end
def except(*keys)
-
(Mash)
- A new mash without the selected keys.
Parameters:
-
*rejected
(Array[(String, Symbol)] The mash keys to exclude.
) -- rejected
def except(*keys) super(*keys.map { |k| convert_key(k) }) end
def fetch(key, *extras)
-
(Object)
- The value at key or the default value.
Parameters:
-
*extras
(Array
) -- Default value. -
key
(Object
) -- The key to fetch. This will be run through convert_key.
def fetch(key, *extras) super(convert_key(key), *extras) end
def initialize(constructor = {})
-
constructor
(Object
) --
def initialize(constructor = {}) if constructor.is_a?(Hash) super() update(constructor) else super(constructor) end end
def initialize_copy(orig)
-
(Object)
- A new copied Mash
Parameters:
-
orig
(Object
) -- Mash being copied
def initialize_copy(orig) super # Handle nested values each do |k, v| if v.is_a?(Mash) || v.is_a?(Array) self[k] = v.dup end end self end
def internal_get(key)
- Api: - private
def internal_get(key) regular_reader(key) end
def internal_set(key, value)
- Api: - private
def internal_set(key, value) regular_writer(key, convert_value(value)) end
def key?(key)
-
(Boolean)
- True if the key exists in the mash.
Parameters:
-
key
(Object
) -- The key to check for. This will be run through convert_key.
def key?(key) super(convert_key(key)) end
def merge(hash)
-
(Mash)
- A new mash with the hash values merged in.
Parameters:
-
hash
(Hash
) -- The hash to merge with the mash.
def merge(hash) dup.update(hash) end
def stringify_keys!; self end
-
(Mash)
- This mash unchanged.
def stringify_keys!; self end
def symbolize_keys
-
(Hash)
- The mash as a Hash with symbolized keys.
def symbolize_keys h = Hash.new(default) each { |key, val| h[key.to_sym] = val } h end
def to_hash
-
(Hash)
- The mash as a Hash with string keys.
def to_hash Hash.new(default).merge(self) end
def update(other_hash)
-
(Mash)
- The updated mash.
Parameters:
-
other_hash
(Hash
) --
def update(other_hash) other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } self end
def values_at(*indices)
-
(Array)
- The values at each of the provided keys
Parameters:
-
*indices
(Array
) --
def values_at(*indices) indices.collect { |key| self[convert_key(key)] } end