class ResponseCollection
Attributes
length[RW]
load_more_call[RW]
paged_objects[RW]
per_page[RW]
size[RW]
total[RW]
Public Class Methods
new(options = {})
click to toggle source
seed_page, total, per_page
, load_more_call
# File lib/bright/response_collection.rb, line 10 def initialize(options = {}) @paged_objects = {0 => options[:seed_page]} @total = options[:total].to_i @per_page = options[:per_page].to_i @pages = @per_page > 0 ? (@total.to_f / @per_page.to_f).ceil : 0 @load_more_call = options[:load_more_call] end
Public Instance Methods
each() { |obj| ... }
click to toggle source
# File lib/bright/response_collection.rb, line 18 def each current_page = -1 while (current_page += 1) < @pages do objects = [@paged_objects[current_page]].flatten.compact next_page_no = current_page + 1 if load_more_call and @paged_objects[next_page_no].nil? and next_page_no < @pages next_page_thread = Thread.new do load_more_call.call(next_page_no) end else next_page_thread = nil end objects.each do |obj| yield obj end @paged_objects[next_page_no] = next_page_thread.value if next_page_thread end end
empty?()
click to toggle source
# File lib/bright/response_collection.rb, line 52 def empty? total <= 0 end
last()
click to toggle source
# File lib/bright/response_collection.rb, line 37 def last last_page_no = @pages - 1 if load_more_call and (last_page = @paged_objects[last_page_no]).nil? last_page = @paged_objects[last_page_no] = load_more_call.call(last_page_no) end last_page.last end
loaded_results()
click to toggle source
# File lib/bright/response_collection.rb, line 45 def loaded_results @paged_objects.values.flatten end