lib/openfire_admin/version_string.rb
module OpenfireAdmin
class VersionString
def initialize(version)
@version = version.to_s.strip.split(/\./)
end
def <=>(othre)
compare(@version.dup, othre.kind_of?(VersionString) ? othre.to_a.dup : othre.to_s.strip.split(/\./))
end
def > other
(self <=> other) == 1
end
def < other
(self <=> other) == -1
end
def >= other
(self <=> other) >= 0
end
def <= other
(self <=> other) <= 0
end
def == other
(self <=> other) == 0
end
def to_s
"VersionString(#{@version.join(".")})"
end
def to_a
@version
end
private
def compare(me,othre)
m = me.shift
o = othre.shift
if m.nil?
return o.nil? ? 0 : -1
elsif o.nil?
return 1
end
md = m.to_i
od = o.to_i
rd = md <=> od
if rd == 0
m.sub!(/^\d*/,'')
o.sub!(/^\d*/,'')
rd = m <=> o
rd = compare(me,othre) if rd == 0
end
rd
end
end
end