Sha256: 7a92df45ad66892b97821b79e486b45f74aef37cfc89dedecfb44e362d3db24b

Contents?: true

Size: 665 Bytes

Versions: 5

Compression:

Stored size: 665 Bytes

Contents

# frozen_string_literal: true

require 'docile'

module RequestHandler
  class Config
    def initialize(&block)
      @config = Docile.dsl_eval(RequestHandler::Builder::OptionsBuilder.new, &block).build
    end

    attr_accessor :config

    def lookup!(key)
      lookup(key) || (raise NoConfigAvailableError, key.to_sym => 'is not configured')
    end

    def lookup(key)
      @config.dig(*symbolize_key(key))
    end

    private

    def symbolize_key(key)
      key.split('.').map(&:to_sym)
    end

    def deep_to_h(obj)
      obj.to_h.transform_values do |v|
        v.is_a?(OpenStruct) || v.is_a?(Struct) ? deep_to_h(v) : v
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
request_handler-2.3.0 lib/request_handler/config.rb
request_handler-2.2.0 lib/request_handler/config.rb
request_handler-2.1.1 lib/request_handler/config.rb
request_handler-2.1.0 lib/request_handler/config.rb
request_handler-2.0.0 lib/request_handler/config.rb