diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-02-15 15:57:44 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-02-15 15:57:44 +0000 |
commit | dc3d6eb9b4aaed051dd6d5a5a07f6c66b72da4c4 (patch) | |
tree | 1d77afa3e7a5af3d3d89c2121b5cecf6423d666d /activesupport/lib/class_inheritable_attributes.rb | |
parent | 45caae41c3fbfc7ba77c5e2dc70734fa80501828 (diff) | |
download | rails-dc3d6eb9b4aaed051dd6d5a5a07f6c66b72da4c4.tar.gz rails-dc3d6eb9b4aaed051dd6d5a5a07f6c66b72da4c4.tar.bz2 rails-dc3d6eb9b4aaed051dd6d5a5a07f6c66b72da4c4.zip |
Moved Active Support into its own gem
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@624 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib/class_inheritable_attributes.rb')
-rw-r--r-- | activesupport/lib/class_inheritable_attributes.rb | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/activesupport/lib/class_inheritable_attributes.rb b/activesupport/lib/class_inheritable_attributes.rb deleted file mode 100644 index f9ca7af7b2..0000000000 --- a/activesupport/lib/class_inheritable_attributes.rb +++ /dev/null @@ -1,117 +0,0 @@ -# Retain for backward compatibility. Methods are now included in Class. -module ClassInheritableAttributes # :nodoc: -end - -# Allows attributes to be shared within an inheritance hierarchy, but where each descendant gets a copy of -# their parents' attributes, instead of just a pointer to the same. This means that the child can add elements -# to, for example, an array without those additions being shared with either their parent, siblings, or -# children, which is unlike the regular class-level attributes that are shared across the entire hierarchy. -class Class # :nodoc: - def class_inheritable_reader(*syms) - syms.each do |sym| - class_eval <<-EOS - def self.#{sym} - read_inheritable_attribute(:#{sym}) - end - - def #{sym} - self.class.#{sym} - end - EOS - end - end - - def class_inheritable_writer(*syms) - syms.each do |sym| - class_eval <<-EOS - def self.#{sym}=(obj) - write_inheritable_attribute(:#{sym}, obj) - end - - def #{sym}=(obj) - self.class.#{sym} = obj - end - EOS - end - end - - def class_inheritable_array_writer(*syms) - syms.each do |sym| - class_eval <<-EOS - def self.#{sym}=(obj) - write_inheritable_array(:#{sym}, obj) - end - - def #{sym}=(obj) - self.class.#{sym} = obj - end - EOS - end - end - - def class_inheritable_hash_writer(*syms) - syms.each do |sym| - class_eval <<-EOS - def self.#{sym}=(obj) - write_inheritable_hash(:#{sym}, obj) - end - - def #{sym}=(obj) - self.class.#{sym} = obj - end - EOS - end - end - - def class_inheritable_accessor(*syms) - class_inheritable_reader(*syms) - class_inheritable_writer(*syms) - end - - def class_inheritable_array(*syms) - class_inheritable_reader(*syms) - class_inheritable_array_writer(*syms) - end - - def class_inheritable_hash(*syms) - class_inheritable_reader(*syms) - class_inheritable_hash_writer(*syms) - end - - def inheritable_attributes - @inheritable_attributes ||= {} - end - - def write_inheritable_attribute(key, value) - inheritable_attributes[key] = value - end - - def write_inheritable_array(key, elements) - write_inheritable_attribute(key, []) if read_inheritable_attribute(key).nil? - write_inheritable_attribute(key, read_inheritable_attribute(key) + elements) - end - - def write_inheritable_hash(key, hash) - write_inheritable_attribute(key, {}) if read_inheritable_attribute(key).nil? - write_inheritable_attribute(key, read_inheritable_attribute(key).merge(hash)) - end - - def read_inheritable_attribute(key) - inheritable_attributes[key] - end - - def reset_inheritable_attributes - inheritable_attributes.clear - end - - private - def inherited_with_inheritable_attributes(child) - inherited_without_inheritable_attributes(child) if respond_to?(:inherited_without_inheritable_attributes) - child.instance_variable_set('@inheritable_attributes', inheritable_attributes.dup) - end - - if respond_to?(:inherited) - alias_method :inherited_without_inheritable_attributes, :inherited - end - alias_method :inherited, :inherited_with_inheritable_attributes -end |