Module: Pagy::Linkable::QueryUtils

Defined in:
lib/pagy/modules/abilities/linkable.rb

Class Method Summary collapse

Class Method Details

.build_nested_query(value, prefix = nil) ⇒ Object

Extracted from Rack::Utils and reformatted for rubocop Allow unescaped Pagy::RawQueryValue



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/pagy/modules/abilities/linkable.rb', line 16

def build_nested_query(value, prefix = nil)
  case value
  when Array
    value.map { |v| build_nested_query(v, "#{prefix}[]") }.join('&')
  when Hash
    value.map do |k, v|
      build_nested_query(v, prefix ? "#{prefix}[#{k}]" : k)
    end.delete_if(&:empty?).join('&')
  when nil
    escape(prefix)
  else
    raise ArgumentError, 'value must be a Hash' if prefix.nil?

    escaped_value = value.is_a?(EscapedValue) ? value : escape(value)
    "#{escape(prefix)}=#{escaped_value}"
  end
end

.escape(str) ⇒ Object



34
35
36
# File 'lib/pagy/modules/abilities/linkable.rb', line 34

def escape(str)
  URI.encode_www_form_component(str)
end