Class: Prependers::Prepender

Inherits:
Module
  • Object
show all
Defined in:
lib/prependers/prepender.rb

Constant Summary collapse

CLASS_METHODS_MODULE_NAME =
'ClassMethods'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(namespace = nil) ⇒ Prepender

Returns a new instance of Prepender.



9
10
11
# File 'lib/prependers/prepender.rb', line 9

def initialize(namespace = nil)
  @namespace = namespace
end

Instance Attribute Details

#namespaceObject (readonly)

Returns the value of attribute namespace.



7
8
9
# File 'lib/prependers/prepender.rb', line 7

def namespace
  @namespace
end

Instance Method Details

#included(base) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/prependers/prepender.rb', line 13

def included(base)
  prepended_module_name = base.name.split('::')[0..-2].join('::')

  if namespace
    prepended_module_name = (prepended_module_name[(namespace.name.length + 2)..-1]).to_s
  end

  prepended_module = Object.const_get(prepended_module_name)
  prepended_module.prepend base

  if base.const_defined?(CLASS_METHODS_MODULE_NAME)
    prepended_module.singleton_class.prepend base.const_get(CLASS_METHODS_MODULE_NAME)
  end
end