module RubyFeatures::Utils
Public Class Methods
module_defined?(target, module_name)
click to toggle source
# File lib/ruby-features/utils.rb, line 23 def module_defined?(target, module_name) ruby_const_defined?(target, module_name) && ruby_const_get(target, module_name).name.start_with?(target.name) end
prepare_module(target, module_name)
click to toggle source
# File lib/ruby-features/utils.rb, line 33 def prepare_module(target, module_name) inject_const_parts_with_target(target, module_name) do |parent, submodule| module_defined?(parent, submodule) ? parent.const_get(submodule) : parent.const_set(submodule, Module.new) end end
prepare_module!(target, module_name)
click to toggle source
# File lib/ruby-features/utils.rb, line 27 def prepare_module!(target, module_name) module_defined?(target, module_name) ? raise(NameError.new("Module already initiated: #{target.name}::#{module_name}")) : prepare_module(target, module_name) end
Private Class Methods
inject_const_parts_with_target(target, const_name, &block)
click to toggle source
# File lib/ruby-features/utils.rb, line 43 def inject_const_parts_with_target(target, const_name, &block) const_parts = const_name.split('::') if const_parts.first == '' target = ::Object const_parts.shift end const_parts.inject(target, &block) end