Froze rails gems
[depot.git] / vendor / rails / activesupport / lib / active_support / core_ext / class / attribute_accessors.rb
1 # Extends the class object with class and instance accessors for class attributes,
2 # just like the native attr* accessors for instance attributes.
3 #
4 # class Person
5 # cattr_accessor :hair_colors
6 # end
7 #
8 # Person.hair_colors = [:brown, :black, :blonde, :red]
9 class Class
10 def cattr_reader(*syms)
11 syms.flatten.each do |sym|
12 next if sym.is_a?(Hash)
13 class_eval(<<-EOS, __FILE__, __LINE__)
14 unless defined? @@#{sym}
15 @@#{sym} = nil
16 end
17
18 def self.#{sym}
19 @@#{sym}
20 end
21
22 def #{sym}
23 @@#{sym}
24 end
25 EOS
26 end
27 end
28
29 def cattr_writer(*syms)
30 options = syms.extract_options!
31 syms.flatten.each do |sym|
32 class_eval(<<-EOS, __FILE__, __LINE__)
33 unless defined? @@#{sym}
34 @@#{sym} = nil
35 end
36
37 def self.#{sym}=(obj)
38 @@#{sym} = obj
39 end
40
41 #{"
42 def #{sym}=(obj)
43 @@#{sym} = obj
44 end
45 " unless options[:instance_writer] == false }
46 EOS
47 end
48 end
49
50 def cattr_accessor(*syms)
51 cattr_reader(*syms)
52 cattr_writer(*syms)
53 end
54 end