Path: | lib/autumn/inheritable_attributes.rb |
Last Update: | Sat Feb 23 07:11:30 +0000 2019 |
This source file, originating from Ruby on Rails, extends the Class class to 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.
This functionality is used by Leaf‘s filter features; if not for this extension, then when a subclass changed its filter chain, all of its superclasses’ filter chains would change as well. This class allows a subclass to inherit a copy of the superclass‘s filter chain, but independently change that copy without affecting the superclass‘s filter chain.
Copyright (c)2004 David Heinemeier Hansson
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.