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