Top Level Namespace

Defined Under Namespace

Modules: SuperModule

Instance Method Summary collapse

Instance Method Details

#super_module(name = nil, &super_module_body) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/super_module.rb', line 46

def super_module(name=nil, &super_module_body)
  initial_ancestor = self.class == Object ? Object : self
  SuperModule.define(&super_module_body).tap do |new_super_module|
    if name
      parent = SuperModule.__super_module_parent(name, initial_ancestor)
      module_name = name.to_s.split('::').last
      parent.const_set(module_name, new_super_module)
      super_module_body = new_super_module.super_module_body
      new_super_module.class_eval(&super_module_body)
    end
  end
end