diff options
author | Michael S. Klishin <michael@novemberain.com> | 2008-12-28 23:47:29 +0300 |
---|---|---|
committer | Michael S. Klishin <michael@novemberain.com> | 2008-12-28 23:47:29 +0300 |
commit | 2b8750eba439c4b829b2e8172a1edc0dfa9c532b (patch) | |
tree | 1ea12e7fe5ad299119d801c7e7f527f6b7780bc3 /activesupport/lib/active_support/core_ext/class | |
parent | e523b43e202d343912f67b8c8737d9e2e956b31f (diff) | |
parent | 0efec64520d5153e5a961f9a759883656b83bb53 (diff) | |
download | rails-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')
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 |