Class: Shrinker::Config
- Inherits:
-
Object
- Object
- Shrinker::Config
- Defined in:
- lib/shrinker/config.rb
Class Method Summary collapse
- .config_setting(name) ⇒ Object
-
.settings ⇒ Object
provides a getter and a setter with the same method config_setting :dog –> dog ‘Husky’ :=> ‘Husky’ (setter) –> dog :=> ‘Husky’ (getter).
Instance Method Summary collapse
- #==(config) ⇒ Object
- #backend_instance ⇒ Object
- #merge(config) ⇒ Object
- #merge!(config) ⇒ Object
- #reset! ⇒ Object
Class Method Details
.config_setting(name) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/shrinker/config.rb', line 13 def self.config_setting(name) settings << name class_eval <<-EV, __FILE__, __LINE__ + 1 attr_reader :#{name} def #{name}(value = nil) return @#{name} if value.nil? @#{name} = value value end EV end |
.settings ⇒ Object
provides a getter and a setter with the same method config_setting :dog
--> dog 'Husky' :=> 'Husky' (setter)
--> dog :=> 'Husky' (getter)
9 10 11 |
# File 'lib/shrinker/config.rb', line 9 def self.settings @settings ||= [] end |
Instance Method Details
#==(config) ⇒ Object
54 55 56 57 58 |
# File 'lib/shrinker/config.rb', line 54 def ==(config) self.class.settings.each { |setting| return false unless send(setting) == config.send(setting) } true end |
#backend_instance ⇒ Object
84 85 86 87 88 89 |
# File 'lib/shrinker/config.rb', line 84 def backend_instance @backend_instance ||= begin class_name = (backend || 'Abstract').to_s ::Shrinker::Backend.const_get(class_name).new( || {}) end end |
#merge(config) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/shrinker/config.rb', line 66 def merge(config) new_config = Config.new new_config.merge!(config) new_config end |
#merge!(config) ⇒ Object
73 74 75 76 77 78 79 80 81 82 |
# File 'lib/shrinker/config.rb', line 73 def merge!(config) case config when self.class self.class.settings.each { |setting| send(setting, config.send(setting)) } when Hash config.each_pair do |setting, value| send(setting, value) end end end |
#reset! ⇒ Object
60 61 62 63 64 |
# File 'lib/shrinker/config.rb', line 60 def reset! self.instance_variables.each do |var| self.instance_variable_set(var, nil) end end |