Skip to content
Sorting library
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
spec
.gitignore Add more doc and split code Sep 23, 2015
.rspec
.rubocop.yml
.rubocop_todo.yml
.travis.yml
Gemfile Add standalone gemspecs for orms Nov 14, 2013
LICENSE
README.md
Rakefile
sorted.gemspec

README.md

Sorted

Build Status

Sorted at it's core is a set of objects that let you sort many different attributes in weird and wonderful ways.

Example

The secret sauce is the Sorted::Set object, in this example we 'toggle' email:

require 'sorted/set'

a = Sorted::Set.new([['email', 'asc'], ['name', 'asc']])
b = Sorted::Set.new([['email', 'asc'], ['phone', 'asc']])

s = a.direction_intersect(b)

s.to_a #=> [['email', 'desc'], ['phone', 'asc'], ['name', 'asc']]

The best way to think about this is to imagine a spreed sheet and what happens when you sort by various columns, Sorted::Set pretty much just does that.

Parsers/Encoders

Parsers return a Sorted::Set that can then be used by an encoder:

require 'sorted/uri_query'

set = Sorted::URIQuery.parse('name_asc!email_asc')
Sorted::SQLQuery.encode(set) #=> 'name ASC email ASC'

Currently implemented:

  • Sorted::SQLQuery
  • Sorted::URIQuery
  • Sorted::JSONQuery
  • Sorted::ElasticsearchQuery
  • Sorted::ParamsQuery

Projects

Something went wrong with that request. Please try again.