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.



1318
1319
1320
1321
# File 'lib/warg.rb', line 1318

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

Instance Method Details

#extended(variables_set) ⇒ Object



1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
# File 'lib/warg.rb', line 1323

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