Skip to content

A ruby gem that adds recursive sorting functionality to hashes and arrays.

License

Notifications You must be signed in to change notification settings

mcrossen/deepsort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deepsort

Gem Version Build Status Coverage

'deepsort' is a ruby gem that adds the methods you've always wanted to arrays and hashes. The next time you need to sort or merge an array inside of a hash inside of an array, deepsort makes that as easy as calling .deep_sort or .deep_merge on the object.

Installation

To install deepsort, use the following terminal command:

gem install deepsort

Deep Sorting

To add deep sorting functionality to arrays and hashes, include it in your project like so:

require "deepsort"

To deeply sort an array or hash without changing the object itself, use the 'deep_sort' method.

require "deepsort"

nested = {"b" => 3, "a"=>[2, 1]}
puts nested.deep_sort
# => {"a" => [1, 2], "b" => 3}

To deeply sort an array or hash in place, use the deep_sort! method.

require "deepsort"

nested = {"b" => 3, "a"=>[2, 1]}
nested.deep_sort!
puts nested
# => {"a" => [1, 2], "b" => 3}

Compare objects by string when deepsorting with the deep_sort_by or deep_sort_by! methods. This is useful to ignore errors from arrays not being able to compare with hashes.

require "deepsort"

puts [{"c" => [2, 1]}, ["b", "a"]].deep_sort_by {|obj| obj.to_s}
# => [["a", "b"], {"c" => [1, 2]}]

Skip arrays or hashs sorting.

require "deepsort"

puts {"b" => [2, 1], "a" => [4, 3]}.deep_sort(array: false)
# => {"a" => [4, 3], "b" => [2, 1]}

puts {"b" => [2, 1], "a" => [4, 3]}.deep_sort(hash: false)
# => {"b" => [1, 2], "a" => [3, 4]}

Deep Merging

The deepsort gem also includes deep merging capabilities. This concatenates arrays and merges hashes in large nested structures. To add deep merging functionality to arrays and hashes, include it in your project like so:

require "deepmerge"

Using deepmerge is similar to deepsort. The biggest difference is that the structure to be merged with is passed in as an argument.

require "deepmerge"

nested = {"a" => [1, 2], "b" => 3}
puts nested.deep_merge({"a" => [3], "c" => 4})
# => {"a"=>[1, 2, 3], "b"=>3, "c"=>4}

To deeply merge a structure in place, use the deep_merge! method instead.

About

A ruby gem that adds recursive sorting functionality to hashes and arrays.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages