class Addressable::URI

def normalized_query(*flags)

Returns:
  • (String) - The query component, normalized.
def normalized_query(*flags)
  return nil unless self.query
  return @normalized_query if defined?(@normalized_query)
  @normalized_query ||= begin
    modified_query_class = Addressable::URI::CharacterClasses::QUERY.dup
    # Make sure possible key-value pair delimiters are escaped.
    modified_query_class.sub!("\\&", "").sub!("\\;", "")
    pairs = (self.query || "").split("&", -1)
    pairs.delete_if(&:empty?) if flags.include?(:compacted)
    pairs.sort! if flags.include?(:sorted)
    component = pairs.map do |pair|
      Addressable::URI.normalize_component(pair, modified_query_class, "+")
    end.join("&")
    component == "" ? nil : component
  end
  # All normalized values should be UTF-8
  @normalized_query.force_encoding(Encoding::UTF_8) if @normalized_query
  @normalized_query
end