Sha256: da5457530b5d8a9d09b9d4e130ff46b820175e6f53a5e586cd115b985252fcfb

Contents?: true

Size: 690 Bytes

Versions: 3

Compression:

Stored size: 690 Bytes

Contents

# frozen_string_literal: true

module SoapyBing
  class ParamGuard
    class ParamRequiredError < StandardError; end

    def initialize(local_options, env_namespace: '')
      @local_options = local_options
      @env_namespace = env_namespace
    end

    def require!(name)
      local_options.fetch(name, ENV[env_var_name(name)]) || raise(ParamRequiredError, err_msg(name))
    end

    private

    attr_reader :local_options, :env_namespace

    def err_msg(name)
      "#{name} have to be passed explicitly or via ENV['#{env_var_name(name)}']"
    end

    def env_var_name(name)
      (env_namespace.empty? ? name : "#{env_namespace}_#{name}").upcase.tr('-', '_')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
soapy_bing-1.0.1 lib/soapy_bing/param_guard.rb
soapy_bing-1.0.0 lib/soapy_bing/param_guard.rb
soapy_bing-0.4.0 lib/soapy_bing/param_guard.rb