Skip to content

Instantly share code, notes, and snippets.

@dreamingechoes
Last active December 15, 2015 10:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dreamingechoes/aec6542f2f5d1ade510b to your computer and use it in GitHub Desktop.
Save dreamingechoes/aec6542f2f5d1ade510b to your computer and use it in GitHub Desktop.
Convert ruby hashes into objects.
class Hashit
def initialize(hash)
hash.each do |k,v|
self.instance_variable_set("@#{k}", v.is_a?(Hash) ? Hashit.new(v) : v)
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
end
end
end
h = Hashit.new({a: '123r', b: {c: 'sdvs'}})
# h.a => '123r'
# h.b.c => 'sdvs'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment