I love OpenStruct, but it has no ability to iterate over the members. I had extended it, but recently I use this little class. Anyone see any issues with it ?
class OpenHash < Hash def method_missing(name, value=nil) key = name.to_s.sub(/[=?!]$/,'').to_sym self[key] = value if name.to_s[-1,1] == "=" return self[key] end end
o = OpenHash.new
=> {}
o.a = 1
=> 1
o.b = 2
=> 2
o.h = OpenHash.new
=> {}
o.h.a = 1
=> 1
o.h.b = 2
=> 2
pp o
{:a=>1, :b=>2, :h=>{:a=>1, :b=>2}} => nil