class Dry::AutoInject::DependencyMap

Public Class Methods

new(*dependencies) click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 11
def initialize(*dependencies)
  @map = {}

  dependencies = dependencies.dup
  aliases = dependencies.last.is_a?(Hash) ? dependencies.pop : {}

  dependencies.each do |identifier|
    name = name_for(identifier)
    add_dependency(name, identifier)
  end

  aliases.each do |name, identifier|
    add_dependency(name, identifier)
  end
end

Public Instance Methods

inspect() click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 27
def inspect
  @map.inspect
end
names() click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 31
def names
  @names ||= @map.keys
end
to_h() click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 35
def to_h
  @map.dup
end
Also aliased as: to_hash
to_hash()
Alias for: to_h

Private Instance Methods

add_dependency(name, identifier) click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 49
def add_dependency(name, identifier)
  name = name.to_sym
  raise DuplicateDependencyError, "name +#{name}+ is already used" if @map.key?(name)

  @map[name] = identifier
end
name_for(identifier) click to toggle source
# File lib/dry/auto_inject/dependency_map.rb, line 42
def name_for(identifier)
  matched = VALID_NAME.match(identifier.to_s)
  raise DependencyNameInvalid, "name +#{identifier}+ is not a valid Ruby identifier" unless matched

  matched[0]
end