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

Version Path
avm-tools-0.116.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.27.2 lib/eac_cli/runner_with_set.rb
avm-tools-0.116.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.27.1 lib/eac_cli/runner_with_set.rb
avm-tools-0.115.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.27.0 lib/eac_cli/runner_with_set.rb
avm-tools-0.114.2 sub/eac_cli/lib/eac_cli/runner_with_set.rb
avm-tools-0.114.1 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.26.2 lib/eac_cli/runner_with_set.rb
avm-tools-0.114.0 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.26.1 lib/eac_cli/runner_with_set.rb
eac_cli-0.26.0 lib/eac_cli/runner_with_set.rb
avm-tools-0.113.6 sub/eac_cli/lib/eac_cli/runner_with_set.rb
avm-tools-0.113.5 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.25.0 lib/eac_cli/runner_with_set.rb
avm-tools-0.113.4 sub/eac_cli/lib/eac_cli/runner_with_set.rb
avm-tools-0.113.3 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.24.1 lib/eac_cli/runner_with_set.rb
avm-tools-0.113.2 sub/eac_cli/lib/eac_cli/runner_with_set.rb
eac_cli-0.24.0 lib/eac_cli/runner_with_set.rb