63 lines
1.8 KiB
Ruby
63 lines
1.8 KiB
Ruby
# encoding: UTF-8
|
|
|
|
class VersionCompare
|
|
|
|
# Compares two version strings. Returns true if version1 <= version2
|
|
# and false otherwise
|
|
#
|
|
# @param [ String ] version1
|
|
# @param [ String ] version2
|
|
#
|
|
# @return [ Boolean ]
|
|
def self.lesser_or_equal?(version1, version2)
|
|
# Prepend a '0' if the version starts with a '.'
|
|
version1 = prepend_zero(version1)
|
|
version2 = prepend_zero(version2)
|
|
|
|
return true if (version1 == version2)
|
|
# Both versions must be set
|
|
return false unless (version1 and version2)
|
|
return false if (version1.empty? or version2.empty?)
|
|
begin
|
|
return true if (Gem::Version.new(version1) < Gem::Version.new(version2))
|
|
rescue ArgumentError => e
|
|
# Example: ArgumentError: Malformed version number string a
|
|
return false if e.message =~ /Malformed version number string/
|
|
raise
|
|
end
|
|
return false
|
|
end
|
|
|
|
# Compares two version strings. Returns true if version1 < version2
|
|
# and false otherwise
|
|
#
|
|
# @param [ String ] version1
|
|
# @param [ String ] version2
|
|
#
|
|
# @return [ Boolean ]
|
|
def self.lesser?(version1, version2)
|
|
# Prepend a '0' if the version starts with a '.'
|
|
version1 = prepend_zero(version1)
|
|
version2 = prepend_zero(version2)
|
|
|
|
return false if (version1 == version2)
|
|
# Both versions must be set
|
|
return false unless (version1 and version2)
|
|
return false if (version1.empty? or version2.empty?)
|
|
begin
|
|
return true if (Gem::Version.new(version1) < Gem::Version.new(version2))
|
|
rescue ArgumentError => e
|
|
# Example: ArgumentError: Malformed version number string a
|
|
return false if e.message =~ /Malformed version number string/
|
|
raise
|
|
end
|
|
return false
|
|
end
|
|
|
|
# @return [ String ]
|
|
def self.prepend_zero(version)
|
|
return nil if version.nil?
|
|
version[0,1] == '.' ? "0#{version}" : version
|
|
end
|
|
end
|