Module: DeepSort::DeepSortArray

Defined in:
lib/deepsort.rb

Overview

inject this method into the Array class to add deep sort functionality to Arrays

Instance Method Summary collapse

Instance Method Details

#deep_sortObject



19
20
21
# File 'lib/deepsort.rb', line 19

def deep_sort
  deep_sort_by { |obj| obj }
end

#deep_sort!Object



23
24
25
# File 'lib/deepsort.rb', line 23

def deep_sort!
  deep_sort_by! { |obj| obj }
end

#deep_sort_by(&block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/deepsort.rb', line 27

def deep_sort_by(&block)
  self.map do |value|
    if value.respond_to? :deep_sort_by
      value.deep_sort_by &block
    elsif value.respond_to? :sort_by
      value.sort_by &block
    else
      value
    end
  end.sort_by &block
end

#deep_sort_by!(&block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/deepsort.rb', line 39

def deep_sort_by!(&block)
  self.map! do |value|
    if value.respond_to? :deep_sort_by!
      value.deep_sort_by! &block
    elsif value.respond_to? :sort_by!
      value.sort_by! &block
    else
      value
    end
  end.sort_by! &block
end