Sha256: 260a37adc905e5c1dbcaf6d5c9f82c5dc37c7315f855c49f4a5971d629e71c22
Contents?: true
Size: 1.1 KB
Versions: 79
Compression:
Stored size: 1.1 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) raise "\"#{namespace}\" already was included" if namespace_set.include?(namespace) namespace_set << namespace self 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
79 entries across 79 versions & 3 rubygems