search: return results while parsing

Instead of returning a full list of results after parsing, yield and
print each result as it's found for a snappier user experience.

Closes Homebrew/homebrew#9576.

Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
This commit is contained in:
Misty De Meo 2012-01-12 21:10:03 -06:00
parent 9a774ac0a6
commit 8d100a0508
2 changed files with 4 additions and 8 deletions

View File

@ -29,10 +29,8 @@ module Homebrew extend self
end end
if search_results.empty? and not blacklisted? query if search_results.empty? and not blacklisted? query
pulls = GitHub.find_pull_requests rx puts "No formula found for \"#{query}\". Searching open pull requests..."
unless pulls.empty? GitHub.find_pull_requests(rx) { |pull| puts pull }
puts "Open pull requests matching \"#{query}\":", *pulls.map { |p| " #{p}" }
end
end end
end end
end end

View File

@ -432,17 +432,15 @@ module GitHub extend self
require 'open-uri' require 'open-uri'
require 'vendor/multi_json' require 'vendor/multi_json'
pulls = []
query = rx.source.delete '.*' query = rx.source.delete '.*'
uri = URI.parse("http://github.com/api/v2/json/issues/search/mxcl/homebrew/open/#{query}") uri = URI.parse("http://github.com/api/v2/json/issues/search/mxcl/homebrew/open/#{query}")
open uri do |f| open uri do |f|
MultiJson.decode(f.read)["issues"].each do |pull| MultiJson.decode(f.read)["issues"].each do |pull|
pulls << pull['pull_request_url'] if rx.match pull['title'] and pull["pull_request_url"] yield pull['pull_request_url'] if rx.match pull['title'] and pull["pull_request_url"]
end end
end end
pulls
rescue rescue
[] nil
end end
end end