class ChefUtils::Mash

def self.from_hash(hash)

Returns:
  • (Mash) - Convert a Hash into a Mash
def self.from_hash(hash)
  mash = Mash.new(hash)
  mash.default = hash.default
  mash
end

def [](key)

Parameters:
  • key (Object) -- The key to get.
def [](key)
  regular_reader(key)
end

def []=(key, value)

Other tags:
    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)

Other tags:
    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)

Other tags:
    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)

Parameters:
  • 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)

Parameters:
  • key (Object) --
def delete(key)
  super(convert_key(key))
end

def except(*keys)

Returns:
  • (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)

Returns:
  • (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 = {})

Parameters:
  • constructor (Object) --
def initialize(constructor = {})
  if constructor.is_a?(Hash)
    super()
    update(constructor)
  else
    super(constructor)
  end
end

def initialize_copy(orig)

Returns:
  • (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)

Other tags:
    Api: - private
def internal_get(key)
  regular_reader(key)
end

def internal_set(key, value)

Other tags:
    Api: - private
def internal_set(key, value)
  regular_writer(key, convert_value(value))
end

def key?(key)

Returns:
  • (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)

Returns:
  • (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

Returns:
  • (Mash) - This mash unchanged.
def stringify_keys!; self end

def symbolize_keys

Returns:
  • (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

Returns:
  • (Hash) - The mash as a Hash with string keys.
def to_hash
  Hash.new(default).merge(self)
end

def update(other_hash)

Returns:
  • (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)

Returns:
  • (Array) - The values at each of the provided keys

Parameters:
  • *indices (Array) --
def values_at(*indices)
  indices.collect { |key| self[convert_key(key)] }
end