Object
# File rbs-2.0.0/lib/rbs/repository.rb, line 81
def self.default
new().tap do |repo|
repo.add(DEFAULT_STDLIB_ROOT)
end
end
# File rbs-2.0.0/lib/rbs/repository.rb, line 87
def self.find_best_version(version, candidates)
candidates = candidates.sort
return candidates.last || raise unless version
if v = candidates.reverse.bsearch {|v| v <= version ? true : false }
v
else
candidates.first or raise
end
end
# File rbs-2.0.0/lib/rbs/repository.rb, line 98
def add(dir)
dirs << dir
dir.each_child(false) do |child|
gem_name = child.to_s
gem_rbs = (gems[gem_name] ||= GemRBS.new(name: gem_name))
gem_rbs.paths << dir + child
end
end
# File rbs-2.0.0/lib/rbs/repository.rb, line 108
def lookup(gem, version)
_, set = lookup_path(gem, version)
set&.path
end
# File rbs-2.0.0/lib/rbs/repository.rb, line 113
def lookup_path(gem, version)
if gem_rbs = gems[gem]
unless gem_rbs.empty?
set = if v = Gem::Version.create(version)&.release
gem_rbs.find_best_version(v)
else
gem_rbs.latest_version
end
[gem_rbs, set]
end
end
end