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