class Popularity::MultiSearch
Attributes
searches[RW]
sources[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/popularity.rb, line 36 def initialize(options = {}) @searches = options[:urls].collect { |url| Search.new(url) } @searches.each do |search| search.results.each do |result| add_search_result(result) end end end
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/popularity.rb, line 50 def as_json(options = {}) json = {} self.searches.collect do |search| json[search.url] = search.as_json end self.sources.collect do |source| json[source.to_s] = self.send(source.to_sym).as_json end json["total"] = total json end
results()
click to toggle source
# File lib/popularity.rb, line 46 def results searches.collect(&:results).reduce(:+) end
total()
click to toggle source
# File lib/popularity.rb, line 65 def total self.searches.collect(&:total).compact.reduce(:+) end
Protected Instance Methods
add_search_result(result)
click to toggle source
# File lib/popularity.rb, line 71 def add_search_result(result) container = self.instance_variable_get("@#{result.name}") unless container @sources ||= [] @sources << result.name.to_sym container = Popularity::ResultsContainer.new self.instance_variable_set "@#{result.name}", container self.define_singleton_method(result.name.to_sym) { container } end container.add_result(result) end