Module: RSMP::SXL::Processing::NaturalSort

Defined in:
lib/rsmp/sxl/processing/natural_sort.rb

Overview

Natural sorting for identifiers containing decimal digit sequences.

Class Method Summary collapse

Class Method Details

.key(value) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/rsmp/sxl/processing/natural_sort.rb', line 6

def self.key(value)
  value.scan(/\d+|\D+/).map do |part|
    if part.match?(/\A\d+\z/)
      [0, part.to_i, part.length]
    else
      [1, part]
    end
  end
end

.sort(values) ⇒ Object



16
17
18
# File 'lib/rsmp/sxl/processing/natural_sort.rb', line 16

def self.sort(values)
  values.sort_by { |value| key(value) }
end