summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-04-13 20:33:15 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-04-14 19:24:48 -0500
commitea0fcf43839f75bd070fd8e5d98480fa392b6aca (patch)
tree37009c62a2025ba26f858295c1ff5583ee572ef9
parentf4db3824390e0ea626c5d9a2d08659296f609edf (diff)
downloadbundler-ea0fcf43839f75bd070fd8e5d98480fa392b6aca.tar.gz
[Index] Avoid sorting specs in intermediary searches
-rw-r--r--lib/bundler/index.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/bundler/index.rb b/lib/bundler/index.rb
index 373f6132af..5f54796fa2 100644
--- a/lib/bundler/index.rb
+++ b/lib/bundler/index.rb
@@ -58,17 +58,23 @@ module Bundler
# Search this index's specs, and any source indexes that this index knows
# about, returning all of the results.
def search(query, base = nil)
+ sort_specs(unsorted_search(query, base))
+ end
+
+ def unsorted_search(query, base)
results = local_search(query, base)
- seen = results.map(&:full_name).to_set
+
+ seen = results.map(&:full_name).to_set unless @sources.empty?
@sources.each do |source|
- source.search(query, base).each do |spec|
+ source.unsorted_search(query, base).each do |spec|
results << spec if seen.add?(spec.full_name)
end
end
- sort_specs(results)
+ results
end
+ protected :unsorted_search
def self.sort_specs(specs)
specs.sort_by do |s|