Class: LazyAnt::Config

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig



3
4
5
6
7
# File 'lib/lazy_ant/config.rb', line 3

def initialize
  self.class.keys.each do |var, options|
    instance_variable_set(var, options[:default])
  end
end

Class Method Details

.accessor_methods(name) ⇒ Object



51
52
53
54
55
# File 'lib/lazy_ant/config.rb', line 51

def accessor_methods(name)
  attr = name.to_s.gsub(/[!\?]$/, '')
  var = "@#{attr}".to_sym
  ["#{attr}=".to_sym, name.to_sym, var, name[-1] == '?']
end

.define_reader(reader, var, options = {}) ⇒ Object



40
41
42
43
44
45
# File 'lib/lazy_ant/config.rb', line 40

def define_reader(reader, var, options = {})
  define_method reader do
    deprecated reader, options[:deprecated] if options[:deprecated]
    instance_variable_get(var)
  end
end

.define_writer(writer, var, options = {}) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/lazy_ant/config.rb', line 32

def define_writer(writer, var, options = {})
  define_method writer do |val|
    deprecated writer, options[:deprecated] if options[:deprecated]
    validate(val) if options[:question]
    instance_variable_set(var, val)
  end
end

.key(name, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/lazy_ant/config.rb', line 23

def key(name, options = {})
  writer, reader, var, question = accessor_methods(name)
  options[:question] = question
  keys[var] = options

  define_writer(writer, var, options)
  define_reader(reader, var, options)
end

.keysObject



47
48
49
# File 'lib/lazy_ant/config.rb', line 47

def keys
  @keys ||= {}
end

Instance Method Details

#deprecated(method, instead) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/lazy_ant/config.rb', line 9

def deprecated(method, instead)
  msg = "config.#{method} is deprecated"
  if instead.is_a?(Symbol)
    writer, = self.class.accessor_methods(instead)
    msg += ", use config.#{writer}"
  end
  warn msg
end

#validate(val) ⇒ Object



18
19
20
# File 'lib/lazy_ant/config.rb', line 18

def validate(val)
  fail ArgumentError unless val == true || val == false
end