blob: fe4f8a4fc04a7709f68bb9971c8141b36d6760a1 (
plain) (
blame)
1
2
3
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# Extends the module object with module and instance accessors for class attributes,
# just like the native attr* accessors for instance attributes.
class Module # :nodoc:
def mattr_reader(*syms)
syms.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__)
unless defined? @@#{sym}
@@#{sym} = nil
end
def self.#{sym}
@@#{sym}
end
def #{sym}
@@#{sym}
end
EOS
end
end
def mattr_writer(*syms)
syms.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__)
unless defined? @@#{sym}
@@#{sym} = nil
end
def self.#{sym}=(obj)
@@#{sym} = obj
end
def #{sym}=(obj)
@@#{sym} = obj
end
EOS
end
end
def mattr_accessor(*syms)
mattr_reader(*syms)
mattr_writer(*syms)
end
end
|