Class: Shrinker::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/shrinker/config.rb

Class Method Summary collapse

Instance Method Summary collapse

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 "    attr_reader :\#{name}\n    \n    def \#{name}(value = nil)\n      return @\#{name} if value.nil?\n      @\#{name} = value\n      value\n    end          \n  EV\nend\n", __FILE__, __LINE__ + 1

.settingsObject

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



48
49
50
# File 'lib/shrinker/config.rb', line 48

def ==(config)
  self.class.settings.each { |setting| send(setting) == config.send(setting) }
end

#backend_instanceObject



76
77
78
79
80
81
# File 'lib/shrinker/config.rb', line 76

def backend_instance
  @backend_instance ||= begin
    class_name = (backend || 'Abstract').to_s
    ::Shrinker::Backend.const_get(class_name).new(backend_options || {})
  end
end

#merge(config) ⇒ Object



58
59
60
61
62
63
# File 'lib/shrinker/config.rb', line 58

def merge(config)
  new_config = Config.new
  new_config.merge!(config)

  new_config
end

#merge!(config) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# File 'lib/shrinker/config.rb', line 65

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



52
53
54
55
56
# File 'lib/shrinker/config.rb', line 52

def reset!
  self.instance_variables.each do |var|
    self.instance_variable_set(var, nil)
  end
end