module DeepSort::DeepSortHash
inject this method into the Hash class to add deep sort functionality to Hashes
Public Instance Methods
<=>(other)
click to toggle source
comparison for hashes is ill-defined. this performs array or string comparison if the normal comparison fails.
Calls superclass method
# File lib/deepsort.rb, line 96 def <=>(other) super(other) || to_a <=> other.to_a || to_s <=> other.to_s end
deep_sort(options = {})
click to toggle source
# File lib/deepsort.rb, line 52 def deep_sort(options = {}) deep_sort_by(options) { |obj| obj } end
deep_sort!(options = {})
click to toggle source
# File lib/deepsort.rb, line 56 def deep_sort!(options = {}) deep_sort_by!(options) { |obj| obj } end
deep_sort_by(options = {}, &block)
click to toggle source
# File lib/deepsort.rb, line 60 def deep_sort_by(options = {}, &block) hash = self.map do |key, value| [if key.respond_to?(:deep_sort_by) key.deep_sort_by(options, &block) else key end, if value.respond_to?(:deep_sort_by) value.deep_sort_by(options, &block) else value end] end Hash[options[:hash] == false ? hash : hash.sort_by(&block)] end
deep_sort_by!(options = {}, &block)
click to toggle source
# File lib/deepsort.rb, line 78 def deep_sort_by!(options = {}, &block) hash = self.map do |key, value| [if key.respond_to?(:deep_sort_by!) key.deep_sort_by!(options, &block) else key end, if value.respond_to?(:deep_sort_by!) value.deep_sort_by!(options, &block) else value end] end replace(Hash[options[:hash] == false ? hash : hash.sort_by!(&block)]) end