Module: SuperModule

Defined in:
lib/super_module.rb,
lib/super_module/module_body_method_call_recorder.rb,
lib/super_module/singleton_method_definition_store.rb

Defined Under Namespace

Modules: ModuleBodyMethodCallRecorder, SingletonMethodDefinitionStore

Class Method Summary collapse

Class Method Details

.included(original_base) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/super_module.rb', line 14

def self.included(original_base)
  original_base.class_eval do
    extend SuperModule::ModuleBodyMethodCallRecorder
    extend SuperModule::SingletonMethodDefinitionStore

    class << self
      def __define_super_module_singleton_methods(base)
        __super_module_singleton_methods.each do |method_name, method_body|
          base.class_eval(method_body)
        end
      end

      def __invoke_module_body_method_calls(base)
        __all_module_body_method_calls_in_definition_order.each do |method_name, args, block|
          base.send(method_name, *args, &block)
        end
      end

      def included(base)
        __define_super_module_singleton_methods(base)
        __invoke_module_body_method_calls(base)
      end
    end
  end
end