11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/deep_sort/hash_ext.rb', line 11
def self.deep_sort(hash, options = {})
new_hash = {}
keys = hash.keys
begin
keys = keys.sort
rescue
keys = keys.sort_by(&:to_s)
end
keys.each do |key|
value = hash[key]
if value.is_a?(Array)
value = DeepSort::ArrayExt.deep_sort(value, options)
elsif value.is_a?(Hash)
value = DeepSort::HashExt.deep_sort(value, options)
elsif options[:sort_enum] and value.is_a?(Enumerable)
value = DeepSort::ArrayExt.deep_sort(value.to_a, options)
end
new_hash[key] = value
end
new_hash
end
|