aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/class
diff options
context:
space:
mode:
authorMichael S. Klishin <michael@novemberain.com>2008-12-28 23:47:29 +0300
committerMichael S. Klishin <michael@novemberain.com>2008-12-28 23:47:29 +0300
commit2b8750eba439c4b829b2e8172a1edc0dfa9c532b (patch)
tree1ea12e7fe5ad299119d801c7e7f527f6b7780bc3 /activesupport/lib/active_support/core_ext/class
parente523b43e202d343912f67b8c8737d9e2e956b31f (diff)
parent0efec64520d5153e5a961f9a759883656b83bb53 (diff)
downloadrails-2b8750eba439c4b829b2e8172a1edc0dfa9c532b.tar.gz
rails-2b8750eba439c4b829b2e8172a1edc0dfa9c532b.tar.bz2
rails-2b8750eba439c4b829b2e8172a1edc0dfa9c532b.zip
Sync with rails/rails/master, merge two metaprogramming annotation efforts
Diffstat (limited to 'activesupport/lib/active_support/core_ext/class')
-rw-r--r--activesupport/lib/active_support/core_ext/class/attribute_accessors.rb48
-rw-r--r--activesupport/lib/active_support/core_ext/class/delegating_attributes.rb33
-rw-r--r--activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb54
3 files changed, 68 insertions, 67 deletions
diff --git a/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb b/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb
index 6b2ac8b38b..75e481fc54 100644
--- a/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb
+++ b/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb
@@ -11,17 +11,17 @@ class Class
syms.flatten.each do |sym|
next if sym.is_a?(Hash)
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- unless defined? @@#{sym} # unless defined @@property
- @@#{sym} = nil # @@property = nil
- end # end
-
- def self.#{sym} # def self.property
- @@#{sym} # @@property
- end # end
-
- def #{sym} # def property
- @@#{sym} # @@property
- end # end
+ unless defined? @@#{sym} # unless defined? @@hair_colors
+ @@#{sym} = nil # @@hair_colors = nil
+ end # end
+ #
+ def self.#{sym} # def self.hair_colors
+ @@#{sym} # @@hair_colors
+ end # end
+ #
+ def #{sym} # def hair_colors
+ @@#{sym} # @@hair_colors
+ end # end
EOS
end
end
@@ -30,19 +30,19 @@ class Class
options = syms.extract_options!
syms.flatten.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- unless defined? @@#{sym} # unless defined? @@property
- @@#{sym} = nil # @@property = nil
- end # end
-
- def self.#{sym}=(obj) # def self.property=(obj)
- @@#{sym} = obj # @@property
- end # end
-
- #{"
- def #{sym}=(obj) # def property=(obj)
- @@#{sym} = obj # @@property = obj
- end # end
- " unless options[:instance_writer] == false }
+ unless defined? @@#{sym} # unless defined? @@hair_colors
+ @@#{sym} = nil # @@hair_colors = nil
+ end # end
+ #
+ def self.#{sym}=(obj) # def self.hair_colors=(obj)
+ @@#{sym} = obj # @@hair_colors = obj
+ end # end
+ #
+ #{" #
+ def #{sym}=(obj) # def hair_colors=(obj)
+ @@#{sym} = obj # @@hair_colors = obj
+ end # end
+ " unless options[:instance_writer] == false } # # instance writer above is generated unless options[:instance_writer] == false
EOS
end
end
diff --git a/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb b/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
index 3b093a9a65..d893818695 100644
--- a/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
+++ b/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
@@ -9,22 +9,23 @@ class Class
class_name_to_stop_searching_on = self.superclass.name.blank? ? "Object" : self.superclass.name
names.each do |name|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- def self.#{name} # def self.property
- if defined?(@#{name}) # if defined?(@property)
- @#{name} # @property
- elsif superclass < #{class_name_to_stop_searching_on} && superclass.respond_to?(:#{name}) # elseif superclass < Object && superclass.respond_to?(:property)
- superclass.#{name} # superclass.property
- end # end
- end # end
- def #{name} # def property
- self.class.#{name} # self.class.property
- end # end
- def self.#{name}? # def self.property?
- !!#{name} # !!property
- end # end
- def #{name}? # def property?
- !!#{name} # !!property
- end # end
+ def self.#{name} # def self.only_reader
+ if defined?(@#{name}) # if defined?(@only_reader)
+ @#{name} # @only_reader
+ elsif superclass < #{class_name_to_stop_searching_on} && # elsif superclass < Object &&
+ superclass.respond_to?(:#{name}) # superclass.respond_to?(:only_reader)
+ superclass.#{name} # superclass.only_reader
+ end # end
+ end # end
+ def #{name} # def only_reader
+ self.class.#{name} # self.class.only_reader
+ end # end
+ def self.#{name}? # def self.only_reader?
+ !!#{name} # !!only_reader
+ end # end
+ def #{name}? # def only_reader?
+ !!#{name} # !!only_reader
+ end # end
EOS
end
end
diff --git a/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb b/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
index 8d0233ce9a..70fdde3a58 100644
--- a/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
+++ b/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb
@@ -26,15 +26,15 @@ class Class # :nodoc:
options = syms.extract_options!
syms.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- def self.#{sym}=(obj) # def self.property=(obj)
- write_inheritable_attribute(:#{sym}, obj) # write_inheritable_attribute(:property, obj)
- end # end
-
- #{"
- def #{sym}=(obj) # def property=(obj)
- self.class.#{sym} = obj # self.class.property = obj
- end # end
- " unless options[:instance_writer] == false }
+ def self.#{sym}=(obj) # def self.color=(obj)
+ write_inheritable_attribute(:#{sym}, obj) # write_inheritable_attribute(:color, obj)
+ end # end
+ #
+ #{" #
+ def #{sym}=(obj) # def color=(obj)
+ self.class.#{sym} = obj # self.class.color = obj
+ end # end
+ " unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
EOS
end
end
@@ -43,15 +43,15 @@ class Class # :nodoc:
options = syms.extract_options!
syms.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- def self.#{sym}=(obj) # def self.property=(obj)
- write_inheritable_array(:#{sym}, obj) # write_inheritable_array(:property, obj)
- end # end
-
- #{"
- def #{sym}=(obj) # def property=(obj)
- self.class.#{sym} = obj # self.class.property = obj
- end # end
- " unless options[:instance_writer] == false }
+ def self.#{sym}=(obj) # def self.levels=(obj)
+ write_inheritable_array(:#{sym}, obj) # write_inheritable_array(:levels, obj)
+ end # end
+ #
+ #{" #
+ def #{sym}=(obj) # def levels=(obj)
+ self.class.#{sym} = obj # self.class.levels = obj
+ end # end
+ " unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
EOS
end
end
@@ -60,15 +60,15 @@ class Class # :nodoc:
options = syms.extract_options!
syms.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
- def self.#{sym}=(obj) # def self.property=(obj)
- write_inheritable_hash(:#{sym}, obj) # write_inheritable_hash(:property, obj)
- end # end
-
- #{"
- def #{sym}=(obj) # def property=(obj)
- self.class.#{sym} = obj # self.class.property = obj
- end # end
- " unless options[:instance_writer] == false }
+ def self.#{sym}=(obj) # def self.nicknames=(obj)
+ write_inheritable_hash(:#{sym}, obj) # write_inheritable_hash(:nicknames, obj)
+ end # end
+ #
+ #{" #
+ def #{sym}=(obj) # def nicknames=(obj)
+ self.class.#{sym} = obj # self.class.nicknames = obj
+ end # end
+ " unless options[:instance_writer] == false } # # the writer above is generated unless options[:instance_writer] == false
EOS
end
end