Method: Muster::Strategies::Pagination#parse

Defined in:
lib/muster/strategies/pagination.rb

#parse(query_string) ⇒ Muster::Results

Processes a query string and returns a hash of its fields/values

Examples:


results = strategy.parse('page=3&per_page=10')  #=>  { 'pagination' => {'page' => 3, 'per_page' => 10}, 'limit' => 10, 'offset' => 20 }

Parameters:

  • query_string (String)

    the query string to parse

Returns:



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/muster/strategies/pagination.rb', line 51

def parse(query_string)
  parameters = parse_query_string(query_string)

  page = parse_page(parameters)
  page_size = parse_page_size(parameters)

  offset = (page - 1) * page_size
  offset = nil if offset < 1

  parameters = parameters.merge(:pagination => { :page => page, :per_page => page_size }, :limit => page_size, :offset => offset)

  if fields.present?
    parameters = parameters.slice(*fields)
  end

  Muster::Results.new(parameters)
end