class HALPresenter::Pagination::Uri

Public Class Methods

new(uri, query) click to toggle source
# File lib/hal_presenter/pagination.rb, line 32
def initialize(uri, query)
  @uri = uri
  @query = query
end
parse(str) click to toggle source
# File lib/hal_presenter/pagination.rb, line 12
def self.parse(str)
  uri = nil
  query = nil
  unless str.nil? || str.empty?
    if m = str.match(%r(\A([^\?]+)\??([^\#]+)?.*\Z))
      uri = m[1]
      query = query_from_string m[2]
    end
  end
  new(uri, query)
end
query_from_string(str) click to toggle source
# File lib/hal_presenter/pagination.rb, line 24
def self.query_from_string(str)
  return {} if str.nil? || str.empty?
  str.split('&').each_with_object({}) do |pair, q|
    key_value = pair.split('=')
    q[key_value[0]] = key_value[1];
  end
end

Public Instance Methods

+(query) click to toggle source
# File lib/hal_presenter/pagination.rb, line 37
def +(query)
  self.class.new(@uri, @query.merge(query))
end
to_s() click to toggle source
# File lib/hal_presenter/pagination.rb, line 41
def to_s
  return if @uri.nil?
  @uri.dup.tap do |uri|
    next if @query.nil? || @query.empty?
    uri << "?" + @query.map { |k,v| "#{k}=#{v}" }.join('&')
  end
end