class RMeetup::Collection

Attributes

current_page[W]
page_size[RW]
total_results[RW]

Public Class Methods

build(response) click to toggle source
# File lib/rmeetup/collection.rb, line 6
def self.build(response)
  collection = Collection.new()
  
  # Setup the attributes needed for WillPaginate style paging
  request_url = response['meta']['url']
  request_parameters = parse_parameters_from_url(request_url)
  collection.page_size = request_parameters['page'] ? request_parameters['page'].to_i : nil
  collection.total_results = response['meta']['total_count'].to_i
  collection.current_page = request_parameters['offset'] ? (request_parameters['offset'].to_i + 1) : 1
  
  # Load the collection with all
  # of the results we passed in
  response['results'].each do |result|
    collection << result
  end
  
  collection
end

Protected Class Methods

parse_parameters_from_url(url) click to toggle source
# File lib/rmeetup/collection.rb, line 47
def self.parse_parameters_from_url(url)
  query = URI.parse(url).query
  parameters = {}
  
  query.split("&").each do |kv|
    kv = kv.split("=")
    parameters[kv[0]] = kv[1]
  end
  parameters
end

Public Instance Methods

current_page() click to toggle source

WillPaginate Helper Methods

These methods are implementded so that you may pass this collection to the will_paginate view helper to render pagination links.

# File lib/rmeetup/collection.rb, line 30
def current_page
  @current_page
end
next_page() click to toggle source
# File lib/rmeetup/collection.rb, line 42
def next_page
  self.current_page == self.total_pages ? nil : self.current_page.to_i+1
end
previous_page() click to toggle source
# File lib/rmeetup/collection.rb, line 38
def previous_page
  self.current_page == 1 ? nil : self.current_page.to_i-1
end
total_pages() click to toggle source
# File lib/rmeetup/collection.rb, line 34
def total_pages
  @page_size ? (@total_results.to_f / @page_size.to_f).ceil : 1
end