class Solargraph::RbsMap

Attributes

library[R]

Public Class Methods

load(library) click to toggle source

@param library [String] @return [RbsMap]

# File lib/solargraph/rbs_map.rb, line 44
def self.load library
  @@rbs_maps_hash[library] ||= RbsMap.new(library)
end
new(library) click to toggle source

@param library [String]

# File lib/solargraph/rbs_map.rb, line 21
def initialize library
  @library = library
  loader = RBS::EnvironmentLoader.new(core_root: nil, repository: repository)
  add_library loader, library
  return unless resolved?
  environment = RBS::Environment.from_loader(loader).resolve_type_names
  environment.declarations.each { |decl| convert_decl_to_pin(decl, Solargraph::Pin::ROOT_PIN) }
end

Public Instance Methods

path_pin(path) click to toggle source
# File lib/solargraph/rbs_map.rb, line 30
def path_pin path
  pins.find { |p| p.path == path }
end
path_pins(path) click to toggle source
# File lib/solargraph/rbs_map.rb, line 34
def path_pins path
  pins.select { |p| p.path == path }
end
repository() click to toggle source
# File lib/solargraph/rbs_map.rb, line 48
def repository
  @repository ||= RBS::Repository.new(no_stdlib: true)
end
resolved?() click to toggle source
# File lib/solargraph/rbs_map.rb, line 38
def resolved?
  @resolved
end

Private Instance Methods

add_library(loader, library) click to toggle source

@param loader [RBS::EnvironmentLoader] @param library [String] @return [Boolean] true if adding the library succeeded

# File lib/solargraph/rbs_map.rb, line 57
def add_library loader, library
  @resolved = if loader.has_library?(library: library, version: nil)
    loader.add library: library
    Solargraph.logger.info "#{short_name} successfully loaded library #{library}"
    true
  else
    Solargraph.logger.info "#{short_name} failed to load library #{library}"
    false
  end
end
short_name() click to toggle source
# File lib/solargraph/rbs_map.rb, line 68
def short_name
  self.class.name.split('::').last
end