7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/ilove/tracing.rb', line 7
def self.config_param(symbol, default_value = nil, &block)
raise 'wrong args' if !default_value.nil? && block_given?
if block_given?
class_variable_set("@@#{symbol}_default", block)
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
def #{symbol}_default
instance_eval &@@#{symbol}_default
end
RUBY
else
class_variable_set("@@#{symbol}_default", default_value)
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
def #{symbol}_default
@@#{symbol}_default
end
RUBY
end
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
def #{symbol}
@#{symbol} ||= #{symbol}_default
end
RUBY
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
def #{symbol}?
#{symbol}
end
def #{symbol}=(value)
@#{symbol} = value
end
RUBY
end
|