110: def self.extended(o)
111:
112: return if o.ancestors.member? Attic::InstanceMethods
113:
114:
115:
116:
117:
118:
119:
120:
121: o.send :include, Attic::InstanceMethods
122:
123:
124: o.metaclass.instance_variable_set("@attic_variables", [])
125: o.class_eval do
126: def self.inherited(o2)
127:
128: attic_vars = self.attic_variables.clone
129: o2.metaclass.instance_variable_set("@attic_variables", attic_vars)
130: end
131: if method_defined? :instance_variables
132: old_instance_variables = instance_method(:instance_variables)
133: define_method :instance_variables do
134: ret = old_instance_variables.bind(self).call.clone
135: ret.reject! { |v| v.to_s =~ /^@___?attic/ }
136: ret
137: end
138: define_method :all_instance_variables do
139: old_instance_variables.bind(self).call
140: end
141: end
142: end
143:
144:
145: end