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_sort(options = {}) ⇒ Object



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

def deep_sort(options = {})
  deep_sort_by(options) { |obj| obj }
end

#deep_sort!(options = {}) ⇒ Object



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

def deep_sort!(options = {})
  deep_sort_by!(options) { |obj| obj }
end

#deep_sort_by(options = {}, &block) ⇒ Object



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

def deep_sort_by(options = {}, &block)
  array = self.map do |value|
    if value.respond_to?(:deep_sort_by)
      value.deep_sort_by(options, &block)
    else
      value
    end
  end
  options[:array] == false ? array : array.sort_by(&block)
end

#deep_sort_by!(options = {}, &block) ⇒ Object



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

def deep_sort_by!(options = {}, &block)
  array = self.map! do |value|
    if value.respond_to?(:deep_sort_by!)
      value.deep_sort_by!(options, &block)
    else
      value
    end
  end
  options[:array] == false ? array : array.sort_by!(&block)
end