Sha256: 016005689fbf6018af19c8c4f5128be4b8b634d1dc5609935da91e334dbbf19a

Contents?: true

Size: 771 Bytes

Versions: 1

Compression:

Stored size: 771 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]

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

      private

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-auto_inject-1.1.0 lib/dry/auto_inject/builder.rb