Class: Sorted::ParamsQuery

Inherits:
Object
  • Object
show all
Extended by:
Parse
Defined in:
lib/sorted/params_query.rb

Overview

Parses an array of decoded query params

This parser/encoder uses an already decoded array of sort strings parsed by a URI library.

Parsing:

params = ['phone_desc', 'name_asc']
set = Sorted::ParamsQuery.parse(params)
set.to_a #=> [['phone', 'desc'], ['name', asc']]

Encoding:

Sorted::ParamsQuery.encode(set) #=> ['phone_desc', 'name_asc']

Constant Summary collapse

REGEXP =
/(([a-z0-9._]+)_([asc|desc]+)|[a-z0-9._]+)/i

Class Method Summary collapse

Methods included from Parse

parse_match, split

Class Method Details

.encode(set) ⇒ Object



34
35
36
# File 'lib/sorted/params_query.rb', line 34

def self.encode(set)
  set.map { |a| a.join('_') }
end

.parse(params) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/sorted/params_query.rb', line 26

def self.parse(params)
  params.inject(Set.new) do |set, part|
    m = part.match(REGEXP)
    next unless m
    set << parse_match(m)
  end
end