Sha256: 92eef14f7dd81e21229cab53b7bc6990ee721c725bca2da2e682f295d67d810e

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module SmartCore::Container::Commands
  # @api private
  # @since 0.5.0
  class Register < Base
    # @return [String, Symbol]
    #
    # @api private
    # @since 0.5.0
    attr_reader :dependency_name

    # @param dependency_name [String, Symbol]
    # @param options [Hash<Symbol,Any>]
    # @param dependency_definition [Proc]
    # @option memoize [Boolean]
    # @return [void]
    #
    # @todo option list
    # @see [SmartCore::Container::KeyGuard]
    #
    # @api private
    # @since 0.5.0
    def initialize(dependency_name, dependency_definition, **options)
      SmartCore::Container::KeyGuard.indifferently_accessable_key(dependency_name).tap do |name|
        @dependency_name = name
        @options = options
        @dependency_definition = dependency_definition
      end
    end

    # @param registry [SmartCore::Container::Registry]
    # @return [void]
    #
    # @api private
    # @since 0.5.0
    def call(registry)
      registry.register(dependency_name, **options, &dependency_definition)
    end

    # @return [SmartCore::Container::Commands::Register]
    #
    # @api private
    # @since 0.5.0
    def dup
      self.class.new(dependency_name, dependency_definition, **options)
    end

    private

    # @return [Proc]
    #
    # @api private
    # @since 0.5.0
    attr_reader :dependency_definition

    # @return [Hash<Symbol,Any>]
    #
    # @api private
    # @since 0.5.0
    attr_reader :options
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
smart_core-0.6.0 lib/smart_core/container/commands/register.rb
smart_core-0.5.2 lib/smart_core/container/commands/register.rb
smart_core-0.5.1 lib/smart_core/container/commands/register.rb
smart_core-0.5.0 lib/smart_core/container/commands/register.rb