OpensStructable is a mixin module which can provide OpenStruct behavior to any class or object. OpenStructable allows extention of data objects with arbitrary attributes.
require 'ostructable' class Record include OpenStructable end record = Record.new record.name = "John Smith" record.age = 70 record.pension = 300 puts record.name # -> "John Smith" puts record.address # -> nil
Thomas Sawyer
Yukihiro Matsumoto
Gavin Sinclair (Documentation)
Compare this object and other for equality.
# File lib/hashery/ostructable.rb, line 162 def ==(other) case other when OpenStructable __table__ == other.__table__ #when OpenStruct # __table__ == other.__table__ when Hash __table__ == other else false end end
Remove the named field from the object.
# File lib/hashery/ostructable.rb, line 142 def delete_field(name) #@__table__ ||= {} __table__.delete(name.to_sym) end
duplicate an OpenStruct object members.
# File lib/hashery/ostructable.rb, line 80 def initialize_copy(orig) super __table__.replace(__table__.dup) end
Returns a string containing a detailed summary of the keys and values.
# File lib/hashery/ostructable.rb, line 150 def inspect str = "<#{self.class}" for k,v in (@__table__ ||= {}) str << " #{k}=#{v.inspect}" end str << ">" end
# File lib/hashery/ostructable.rb, line 85 def marshal_dump __table__ end
# File lib/hashery/ostructable.rb, line 89 def marshal_load(hash) __table__.replace(hash) __table__.each_key{|key| new_ostruct_member(key)} end
Generated with the Darkfish Rdoc Generator 2.