class Easy::Configuration::Structure

Public Class Methods

new(default_values = {}) click to toggle source
# File lib/easy/configuration/structure.rb, line 5
def initialize(default_values = {})
  @values  = default_values.dup
  @changed = Hash.new { |hash, key| hash[key] = false }

  define_instance_methods
end

Public Instance Methods

merge!(structure, ignore_defaults = true) click to toggle source
# File lib/easy/configuration/structure.rb, line 12
def merge!(structure, ignore_defaults = true)
  if ignore_defaults
    @values.merge!(structure.values) { |key, v1, v2| structure.changed?(key) ? v2 : v1 }
  else
    @values.merge!(structure.values)
  end
end

Protected Instance Methods

changed?(attribute) click to toggle source
# File lib/easy/configuration/structure.rb, line 26
def changed?(attribute)
  @changed[attribute]
end
values() click to toggle source
# File lib/easy/configuration/structure.rb, line 22
def values
  @values
end

Private Instance Methods

define_instance_methods() click to toggle source
# File lib/easy/configuration/structure.rb, line 32
def define_instance_methods
  @values.keys.each do |key|
    self.class.send :define_method, key do
      @values[key]
    end

    self.class.send :define_method, "#{key}_changed?" do
      @changed[key]
    end

    self.class.send :define_method, "#{key}=" do |v|
      @changed[key] = true
      @values[key]  = v
    end
  end
end