38 lines
550 B
Ruby
38 lines
550 B
Ruby
class NginxVersion
|
|
include Comparable
|
|
|
|
attr_reader :version
|
|
|
|
def initialize(version)
|
|
@version = version
|
|
end
|
|
|
|
def <=>(other)
|
|
lhsegments = segments
|
|
rhsegments = other.segments
|
|
|
|
parts = [lhsegments.size, rhsegments.size].max
|
|
|
|
(0..(parts - 1)).each do |index|
|
|
lhs = lhsegments[index] || 0
|
|
rhs = rhsegments[index] || 0
|
|
|
|
next if lhs == rhs
|
|
|
|
return lhs <=> rhs
|
|
end
|
|
|
|
0
|
|
end
|
|
|
|
def to_s
|
|
version
|
|
end
|
|
|
|
protected
|
|
|
|
def segments
|
|
version.split('.').map { |part| Integer(part) }
|
|
end
|
|
end
|