diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-04-13 20:33:15 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-04-14 19:24:48 -0500 |
commit | ea0fcf43839f75bd070fd8e5d98480fa392b6aca (patch) | |
tree | 37009c62a2025ba26f858295c1ff5583ee572ef9 | |
parent | f4db3824390e0ea626c5d9a2d08659296f609edf (diff) | |
download | bundler-ea0fcf43839f75bd070fd8e5d98480fa392b6aca.tar.gz |
[Index] Avoid sorting specs in intermediary searches
-rw-r--r-- | lib/bundler/index.rb | 12 |
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| |