Sha256: cec2e4c0fe2bfa35340cb1d4be5f6692a072b73fbbc058b1deac9b310782e178
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
module RSolr::Ext::Response::Docs def self.extended(base) d = base['response']['docs'] # TODO: could we do this lazily (Enumerable etc.) d.each{|doc| doc.extend RSolr::Ext::Doc } d.extend Pageable d.per_page = [base.rows, 1].max d.start = base.start d.total = base.total end module Pageable attr_accessor :start, :per_page, :total # Returns the current page calculated from 'rows' and 'start' # WillPaginate hook def current_page return 1 if start < 1 per_page_normalized = per_page < 1 ? 1 : per_page @current_page ||= (start / per_page_normalized).ceil + 1 end # Calcuates the total pages from 'numFound' and 'rows' # WillPaginate hook def total_pages @total_pages ||= per_page > 0 ? (total / per_page.to_f).ceil : 1 end # returns the previous page number or 1 # WillPaginate hook def previous_page @previous_page ||= (current_page > 1) ? current_page - 1 : 1 end # returns the next page number or the last # WillPaginate hook def next_page @next_page ||= (current_page == total_pages) ? total_pages : current_page+1 end def has_next? current_page < total_pages end def has_previous? current_page > 1 end end def docs @docs ||= begin response['docs'] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rsolr-ext-1.0.3 | lib/rsolr-ext/response/docs.rb |