Module: Podrpt::VersionComparer

Defined in:
lib/podrpt/version_comparer.rb

Class Method Summary collapse

Class Method Details

.compare(a, b) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/podrpt/version_comparer.rb', line 4

def self.compare(a, b)
  ta, tb = tokenize(a), tokenize(b)
  [ta.length, tb.length].max.times do |i|
    va, vb = ta[i] || 0, tb[i] || 0
    if va.is_a?(vb.class)
      next if va == vb
      return va > vb ? 1 : -1
    else
      return va.is_a?(Integer) ? 1 : -1
    end
  end
  0
end

.tokenize(version) ⇒ Object



3
# File 'lib/podrpt/version_comparer.rb', line 3

def self.tokenize(version); (version || '').to_s.scan(/[A-Za-z]+|\d+/).map { |t| t.match?(/\d+/) ? t.to_i : t.downcase }; end