module InstanceProperty

Constants

VERSION

Public Instance Methods

properties(sym0, *syms, &initializer) click to toggle source
# 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) click to toggle source
# 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