Class: Warg::Config::VariableSet::Property

Inherits:
Module
  • Object
show all
Defined in:
lib/warg.rb

Constant Summary collapse

REGEXP =
/^[A-Za-z_]+$/

Instance Method Summary collapse

Constructor Details

#initialize(name, initial_value = nil) ⇒ Property

Returns a new instance of Property.



1398
1399
1400
1401
# File 'lib/warg.rb', line 1398

def initialize(name, initial_value = nil)
  @name = name
  @initial_value = initial_value
end

Instance Method Details

#extended(variables_set) ⇒ Object



1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
# File 'lib/warg.rb', line 1403

def extended(variables_set)
  variables_set.define! @name

  variables_set.singleton_class.class_eval <<-PROPERTY_METHODS
    attr_writer :#{@name}

    def #{@name}(&block)
      if block.nil?
        value = instance_variable_get(:@#{@name})

        if value.respond_to?(:to_proc)
          instance_eval(&value)
        else
          value
        end
      else
        instance_variable_set(:@#{@name}, block)
      end
    end
  PROPERTY_METHODS

  variables_set.instance_variable_set("@#{@name}", @initial_value)
end