class HashObject

Public Class Methods

new(hash = {}) click to toggle source
# File lib/wedge/utilis/hash.rb, line 83
def initialize(hash = {})
  hash.each do |k,v|
    if v.kind_of? Hash
      self.instance_variable_set("@#{k}", HashObject.new(v))
    end

    self.instance_variable_set("@#{k}", v)
    self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
    self.class.send(:define_method, "#{k}=", proc{|vv| self.instance_variable_set("@#{k}", vv)})
  end
end

Public Instance Methods

dup() click to toggle source
# File lib/wedge/utilis/hash.rb, line 104
def dup
  Wedge::IndifferentHash.new self.to_h.inject({}) {|copy, (key, value)| copy[key] = value.dup rescue value; copy}
end
to_h() click to toggle source
# File lib/wedge/utilis/hash.rb, line 95
def to_h
  hash_to_return = Wedge::IndifferentHash.new
  self.instance_variables.each do |var|
    value = self.instance_variable_get(var)
    hash_to_return[var.to_s.gsub("@","")] = value.is_a?(HashObject) ? value.to_h : value
  end
  return hash_to_return
end