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