module Solargraph::LanguageServer::Host::Dispatch

def explicit_library_for uri

Returns:
  • (Library, nil) -

Parameters:
  • uri (String) --

Raises:
  • (FileNotFoundError) - if the source could not be attached.
def explicit_library_for uri
  filename = UriHelpers.uri_to_file(uri)
  libraries.each do |lib|
    if lib.contain?(filename)
      lib.attach sources.find(uri) if sources.include?(uri)
      return lib
    end
  end
  nil
end

def generic_library

Returns:
  • (Library) -
def generic_library
  @generic_library ||= Solargraph::Library.new
end

def generic_library_for uri

Returns:
  • (Library) -

Parameters:
  • uri (String) --

Raises:
  • (FileNotFoundError) - if the source could not be attached.
def generic_library_for uri
  generic_library.attach sources.find(uri)
  generic_library.catalog
  generic_library
end

def implicit_library_for uri

Returns:
  • (Library, nil) -

Parameters:
  • uri (String) --

Raises:
  • (FileNotFoundError) - if the source could not be attached.
def implicit_library_for uri
  filename = UriHelpers.uri_to_file(uri)
  libraries.each do |lib|
    if filename.start_with?(lib.workspace.directory)
      lib.attach sources.find(uri)
      lib.catalog
      return lib
    end
  end
  nil
end

def libraries

Returns:
  • (Array) -
def libraries
  @libraries ||= []
end

def library_for uri

Returns:
  • (Library) -

Parameters:
  • uri (String) --
def library_for uri
  result = explicit_library_for(uri) ||
    implicit_library_for(uri) ||
    generic_library_for(uri)
  result.attach sources.find(uri) if sources.include?(uri)
  result
end

def sources

Returns:
  • (Sources) -
def sources
  @sources ||= begin
    src = Sources.new
    src.add_observer self, :update_libraries
    src
  end
end

def update_libraries uri

Returns:
  • (void) -

Parameters:
  • uri (String) --
def update_libraries uri
  src = sources.find(uri)
  libraries.each do |lib|
    lib.merge src if lib.contain?(src.filename)
  end
  diagnoser.schedule uri
end