Module: SuperModule
- Defined in:
- lib/super_module.rb,
lib/super_module/v1.rb,
lib/super_module/v1/module_body_method_call_recorder.rb,
lib/super_module/v1/singleton_method_definition_store.rb
Overview
Avoiding require_relative for backwards compatibility with Ruby 1.8.7
Defined Under Namespace
Modules: V1
Constant Summary collapse
- V1_LIBRARY =
File.(File.join(File.dirname(__FILE__), 'super_module', 'v1'))
Class Attribute Summary collapse
-
.super_module_body ⇒ Object
Returns the value of attribute super_module_body.
Class Method Summary collapse
- .__super_module_parent(name, ancestor) ⇒ Object
- .define(&super_module_body) ⇒ Object
- .included(original_base) ⇒ Object
Class Attribute Details
.super_module_body ⇒ Object
Returns the value of attribute super_module_body.
15 16 17 |
# File 'lib/super_module.rb', line 15 def super_module_body @super_module_body end |
Class Method Details
.__super_module_parent(name, ancestor) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/super_module.rb', line 30 def __super_module_parent(name, ancestor) name_tokens = name.to_s.split('::') name_token_count = name_tokens.size if name_token_count == 1 ancestor else top_ancestor = ancestor.const_get(name_tokens.first) sub_module_name = name_tokens[1, name_token_count].join('::') __super_module_parent(sub_module_name, top_ancestor) end end |
.define(&super_module_body) ⇒ Object
17 18 19 |
# File 'lib/super_module.rb', line 17 def define(&super_module_body) clone.tap { |super_module| super_module.super_module_body = super_module_body } end |
.included(original_base) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/super_module.rb', line 21 def included(original_base) if super_module_body original_base.class_eval(&super_module_body) else require V1_LIBRARY original_base.send(:include, SuperModule::V1) end end |