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
42
43
44
45
46
47
48
|
# File 'lib/twirp_rails.rb', line 14
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
|