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
 |