4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/include/Properties.rb', line 4
def define_class_property(symbol, default: nil)
define_singleton_method(symbol) do
val = instance_variable_get("@#{symbol}")
if val then
return val
else
val = default
return default
end
end
define_singleton_method("#{symbol}=") do |value|
instance_variable_set("@#{symbol}", value)
end
attr_accessor(symbol)
define_method("#{symbol}") do
val = instance_variable_get("@#{symbol}")
if val then
return val
else
val = self.class.send(symbol)
return val
end
end
end
|