class Slimmer::Processors::SearchParameterInserter

Public Class Methods

new(response) click to toggle source
# File lib/slimmer/processors/search_parameter_inserter.rb, line 5
def initialize(response)
  @response = response
end

Public Instance Methods

add_hidden_input(search_form, name, value) click to toggle source
# File lib/slimmer/processors/search_parameter_inserter.rb, line 26
def add_hidden_input(search_form, name, value)
  element = Nokogiri::XML::Node.new("input", search_form)
  element["type"] = "hidden"
  element["name"] = name
  element["value"] = value.to_s
  search_form.add_child(element)
end
filter(_content_document, page_template) click to toggle source
# File lib/slimmer/processors/search_parameter_inserter.rb, line 9
def filter(_content_document, page_template)
  search_form = page_template.at_css("form#search")
  if search_parameters && search_form
    search_parameters.each_pair do |name, value|
      # Value can either be a string or an array of values
      if value.is_a? Array
        array_name = "#{name}[]"
        value.each do |array_value|
          add_hidden_input(search_form, array_name, array_value)
        end
      else
        add_hidden_input(search_form, name, value)
      end
    end
  end
end
parse_search_parameters() click to toggle source
# File lib/slimmer/processors/search_parameter_inserter.rb, line 38
def parse_search_parameters
  header_value = @response.headers.fetch(Slimmer::Headers::SEARCH_PARAMETERS_HEADER, "{}")
  JSON.parse(header_value)
end
search_parameters() click to toggle source
# File lib/slimmer/processors/search_parameter_inserter.rb, line 34
def search_parameters
  @search_parameters ||= parse_search_parameters
end