Sha256: 9b739fba7a9695144a8372e83e38f27c179c3b2d38acfa23c549ee342c623a58

Contents?: true

Size: 828 Bytes

Versions: 3

Compression:

Stored size: 828 Bytes

Contents

# frozen_string_literal: true

module Dry
  module AutoInject
    class Builder
      # @api private
      attr_reader :container

      # @api private
      attr_reader :strategies

      # This clashes with the hash strategy
      undef hash

      def initialize(container, options = {})
        @container = container
        @strategies = options.fetch(:strategies) { Strategies }
      end

      # @api public
      def [](*dependency_names)
        default[*dependency_names]
      end

      def respond_to_missing?(name, _include_private = false)
        strategies.key?(name)
      end

      private

      def method_missing(name, *args, &block)
        if strategies.key?(name)
          Injector.new(container, strategies[name], builder: self)
        else
          super
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-auto_inject-1.0.1 lib/dry/auto_inject/builder.rb
dry-auto_inject-1.0.0 lib/dry/auto_inject/builder.rb
dry-auto_inject-1.0.0.rc1 lib/dry/auto_inject/builder.rb