#!/usr/bin/ruby -w

def version_compare v1, v2
  p v1, v2
  p1 = v1.scan(/(\d+|\w+)/).flatten
  p2 = v2.scan(/(\d+|\w+)/).flatten
  p p1, p2
  size = (p1.size > p2.size ? p1.size - 1 : p2.size - 1)
  for i in 0..(size)
    if p1[i].nil? and not p2[i].nil?
      return -1
    end
    if not p1[i].nil? and p2[i].nil?
      return 1
    end
    if p1[i] != p2[i]
      if p1[i] > p2[i]
        return 1
      end
      return -1
    end
  end
  return 0
end

p version_compare("0.1", "0.1a")
p version_compare("0.1a", "0.1a-1")
p version_compare("0.1a-1", "0.1b")
p version_compare("0.1b", "0.1a-9.5.4")
p version_compare("0.1a-9.5.4", "0.1a-9.5.4")
p version_compare("4.0x-8", "4.1")
p version_compare("1.2.3-2.1", "1.2.4-2.2")
p version_compare("19990827-20", "19990827-20a")
p version_compare("3.x.0d", "3.x.0f")
p version_compare("0.5.9.1+000216-6", "0.5.9.2+000216-6")
p version_compare("1.2alpha+1-2", "1.2alpha+2-1")

# numeric versions only
#def vcomp v1, v2
# # <  : -1
# # == :  0
# # >  :  1
# p1 = v1.split "."
# p2 = v2.split "."
# for i in 0..(p1.size > p2.size ? p1.size - 1 : p2.size - 1)
#   #puts "  #{p1[i].to_i} <=> #{p2[i].to_i}"
#   if p1[i].to_i != p2[i].to_i
#     if p1[i].to_i > p2[i].to_i
#       return 1
#     end
#     return -1
#   end
# end
# return 0
#end
#
##ruby = RUBY_VERSION
#ruby = "1.6.1.0.4.25"
#
#ARGV.each{ |arg|
# puts arg
# puts "#{arg} <=> #{ruby}: #{vcomp(arg, ruby)}"
#}
