Top Level Namespace
Defined Under Namespace
Modules: AttrInit
Instance Method Summary collapse
- #accessor_struct(*attrs) ⇒ Object
- #attr_hash(*attrs) ⇒ Object
- #attr_init(*attrs) ⇒ Object
- #reader_struct(*attrs) ⇒ Object
Instance Method Details
#accessor_struct(*attrs) ⇒ Object
39 40 41 42 43 |
# File 'lib/attr_init.rb', line 39 def accessor_struct(*attrs) attr_accessor *attrs attr_init *attrs attr_hash *attrs end |
#attr_hash(*attrs) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/attr_init.rb', line 24 def attr_hash(*attrs) define_method(:to_h) do self.class.class_variable_get(:@@_hidden_attrs) .each_with_object({}) do |attr, hash| hash[attr] = public_send(attr) end end end |
#attr_init(*attrs) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/attr_init.rb', line 3 def attr_init(*attrs) begin hidden_attrs = superclass.class_variable_get :@@_hidden_attrs class_variable_set :@@_hidden_attrs, hidden_attrs + attrs rescue NameError => e class_variable_set :@@_hidden_attrs, attrs end define_method(:attr_init) do |params| self.class.class_variable_get(:@@_hidden_attrs).each do |a| instance_variable_set "@#{a}", params[a] end end protected :attr_init define_method(:initialize) do |params| attr_init(params) end end |