class Caesars::Hash

Caesars::Hash

A subclass of ::Hash (1.9) or Caesars::OrderedHash (1.8) that provides method names for hash parameters. It's like a lightweight OpenStruct.

ch = Caesars::Hash[:tabasco => :lots!]
puts ch.tabasco  # => lots!

Public Instance Methods

__class__() click to toggle source
# File lib/caesars/hash.rb, line 35
def __class__
  HASH_TYPE
end
method_missing(meth) click to toggle source
# File lib/caesars/hash.rb, line 13
def method_missing(meth)
  STDERR.puts "Caesars::Hash.method_missing: #{meth}" if Caesars.debug?
  self[meth] || self[meth.to_s]
end
to_hash(hash=self) click to toggle source

Returns a clone of itself and all children cast as ::Hash objects

# File lib/caesars/hash.rb, line 19
def to_hash(hash=self)
  return hash unless hash.is_a?(Caesars::Hash) # nothing to do
  target = (Caesars::HASH_TYPE)[dup]
  hash.keys.each do |key|
    if hash[key].is_a? Caesars::Hash
      target[key] = hash[key].to_hash
      next
    elsif hash[key].is_a? Array
      target[key] = hash[key].collect { |h| to_hash(h) }  
      next
    end
    target[key] = hash[key]
  end
  target
end