lib/heredity.rb in heredity-0.0.3 vs lib/heredity.rb in heredity-0.1.0
- old
+ new
@@ -2,8 +2,35 @@
require "heredity/version"
module Heredity
def self.included(klass)
- klass.__send__(:include, ::Heredity::InheritableClassInstanceVariables)
+ klass.class_eval do
+ extend ::Heredity::ClassMethods
+ include ::Heredity::InheritableClassInstanceVariables
+
+ class << self
+ alias_method :inheritance_eval, :on_inherit
+ alias_method :inherited_eval, :on_inherit
+ alias_method :when_inherited, :on_inherit
+ end
+ end
+ end
+
+ module ClassMethods
+ def _heredity_inherited_hooks
+ @_heredity_inherited_hooks ||= []
+ end
+
+ def inherited(klass)
+ super
+
+ _heredity_inherited_hooks.each do |block|
+ klass.class_eval(&block)
+ end
+ end
+
+ def on_inherit(&block)
+ _heredity_inherited_hooks << block
+ end
end
end