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

Version Path
eac_tools-0.55.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.55.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.54.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.53.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.52.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.51.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.50.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.49.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.48.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.48.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.47.2 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.47.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.47.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.46.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.45.2 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.30.0 lib/eac_cli/runner_with_set.rb
eac_tools-0.45.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.45.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.44.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_tools-0.43.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb