97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/datawire-quark-core.rb', line 97
def static(pairs)
pairs.each do |name, default|
_lazy_statics << name
self.instance_variable_set("@#{name}", Unassigned)
define_singleton_method(name) do
value = self.instance_variable_get("@#{name}")
if value == Unassigned
value = default.call
self.instance_variable_set("@#{name}", value)
end
value
end
define_singleton_method("#{name}=") do |value|
self.instance_variable_set("@#{name}", value)
end
define_method(name) do
self.class.send(name)
end
define_method("#{name}=") do |value|
self.class.send("#{name}=", value)
end
end
end
|