suggest_gems_from_name(gem_name, type = :latest)
public
Suggests gems based on the supplied gem_name. Returns an array of
alternative gem names.
# File lib/rubygems/spec_fetcher.rb, line 187
def suggest_gems_from_name(gem_name, type = :latest)
gem_name = gem_name.downcase.tr('_-', '')
max = gem_name.size / 2
names = available_specs(type).first.values.flatten(1)
matches = names.map { |n|
next unless n.match_platform?
distance = levenshtein_distance gem_name, n.name.downcase.tr('_-', '')
next if distance >= max
return [n.name] if distance == 0
[n.name, distance]
}.compact
matches = if matches.empty? && type != :prerelease
suggest_gems_from_name gem_name, :prerelease
else
matches.uniq.sort_by { |name, dist| dist }
end
matches.first(5).map { |name, dist| name }
end