Sha256: 41fd04dc78ffc58069a29dcff53595fd284743d7c2c25bb5ba3aed8254b274af
Contents?: true
Size: 1.22 KB
Versions: 39
Compression:
Stored size: 1.22 KB
Contents
# frozen_string_literal: true module EacCli class RunnerWithSet class << self def default @default ||= new end end def add_namespace(namespace) namespace = sanitize_namespace(namespace) namespace_set << namespace unless namespace_set.include?(namespace) self end def add_from_gems_registry ::EacRubyUtils::GemsRegistry.new('RunnerWith').registered.each do |registered_gem| add_namespace(registered_gem.registered_module) end end def item_to_module(item) item.is_a?(::Module) ? item : key_to_module(item) end def namespaces namespace_set.dup end private def namespace_set @namespace_set ||= ::Array.new end def key_to_module(key) namespace_set.lazy .map { |namespace| key_to_module_in_namespace(namespace, key) } .find(&:present?) || raise("Not module found with key \"#{key}\" (Namespaces: #{namespace_set})") end def key_to_module_in_namespace(namespace, key) namespace.const_get(key.to_s.camelize) rescue ::NameError nil end def sanitize_namespace(source) source.is_a?(::Module) ? source : source.to_s.constantize end end end
Version data entries
39 entries across 39 versions & 2 rubygems