Module: InstanceProperty

Defined in:
lib/instance_property.rb,
lib/instance_property/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

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