Sorting library
Ruby
Latest commit 6490682 Jan 11, 2016 @mynameisrufus Upcase sorted
Permalink
Failed to load latest commit information.
lib Allow ruby head failures and release Jan 11, 2016
spec
.gitignore Add more doc and split code Sep 23, 2015
.rspec
.rubocop.yml
.rubocop_todo.yml
.travis.yml Allow ruby head failures and release Jan 11, 2016
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