Class: Yoda::Typing::Inferencer::LoadResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/typing/inferencer/load_resolver.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project) ⇒ LoadResolver

Returns a new instance of LoadResolver.

Parameters:



9
10
11
# File 'lib/yoda/typing/inferencer/load_resolver.rb', line 9

def initialize(project)
  @project = project
end

Instance Attribute Details

#projectStore::Project (readonly)

Returns:



6
7
8
# File 'lib/yoda/typing/inferencer/load_resolver.rb', line 6

def project
  @project
end

Instance Method Details

#librariesObject



26
27
28
29
30
31
32
33
# File 'lib/yoda/typing/inferencer/load_resolver.rb', line 26

def libraries
  [
    # In search priority order
    project.dependency.loadable_gems,
    project.dependency.std,
    project.dependency.core
  ].flatten.map { |lib| lib.with_project_connection(project: project) }
end

#resolve(path) ⇒ String?

Parameters:

  • path (String)

Returns:

  • (String, nil)


15
16
17
18
19
20
21
22
23
24
# File 'lib/yoda/typing/inferencer/load_resolver.rb', line 15

def resolve(path)
  path_at_project = Services::LoadablePathResolver.new.find_loadable_path(project.project_load_paths, path)
  return path_at_project if path_at_project

  found_library = libraries.find do |gem|
    gem.contain_requirable_file?(path)
  end

  found_library&.find_requirable_file(path)
end