module Pakyow::Support::ObjectMaker

@api private

Public Class Methods

define_const_for_object_with_name(object_to_define, object_name) click to toggle source
# File lib/pakyow/support/makeable/object_maker.rb, line 9
def self.define_const_for_object_with_name(object_to_define, object_name)
  return if object_name.nil?

  target = object_name.namespace.parts.inject(Object) { |target_for_part, object_name_part|
    ObjectMaker.define_object_on_target_with_constant_name(Module.new, target_for_part, object_name_part)
  }

  ObjectMaker.define_object_on_target_with_constant_name(object_to_define, target, object_name.name)
end
define_object_on_target_with_constant_name(object, target, constant_name) click to toggle source
# File lib/pakyow/support/makeable/object_maker.rb, line 19
def self.define_object_on_target_with_constant_name(object, target, constant_name)
  constant_name = Support.inflector.camelize(constant_name)

  unless target.const_defined?(constant_name, false)
    target.const_set(constant_name, object)
  end

  target.const_get(constant_name)
end