Module: InstanceProperty
- Defined in:
- lib/instance_property.rb,
lib/instance_property/version.rb
Constant Summary collapse
- VERSION =
"0.0.1"
Instance Method Summary collapse
- #properties(sym0, *syms, &initializer) ⇒ Object
- #property(sym, default = nil, &initializer) ⇒ Object
Instance Method Details
#properties(sym0, *syms, &initializer) ⇒ Object
20 21 22 |
# File 'lib/instance_property.rb', line 20 def properties(sym0, *syms, &initializer) ([sym0] + syms).each {|sym| property sym, &initializer } end |
#property(sym, default = nil, &initializer) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/instance_property.rb', line 4 def property(sym, default = nil, &initializer) initializer ||= -> * { default } define_method(sym) do |*args| name = "@#{sym}".to_sym if !args.empty? instance_variable_set name, args.first elsif !instance_variable_defined? name instance_variable_set name, instance_eval(&initializer) end instance_variable_get name end end |