SkillAgentSearch skills...

Deepsort

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

Install / Use

/learn @mcrossen/Deepsort
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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.

View on GitHub
GitHub Stars37
CategoryDevelopment
Updated1y ago
Forks6

Languages

Ruby

Security Score

75/100

Audited on Feb 15, 2025

No findings