# File lib/puppet/util/package.rb, line 2
 2:   def versioncmp(version_a, version_b)
 3:     vre = /[-.]|\d+|[^-.\d]+/
 4:     ax = version_a.scan(vre)
 5:     bx = version_b.scan(vre)
 6: 
 7:     while (ax.length>0 && bx.length>0)
 8:       a = ax.shift
 9:       b = bx.shift
10: 
11:       if( a == b )                 then next
12:       elsif (a == '-' && b == '-') then next
13:       elsif (a == '-')             then return -1
14:       elsif (b == '-')             then return 1
15:       elsif (a == '.' && b == '.') then next
16:       elsif (a == '.' )            then return -1
17:       elsif (b == '.' )            then return 1
18:       elsif (a =~ /^\d+$/ && b =~ /^\d+$/) then
19:         if( a =~ /^0/ or b =~ /^0/ ) then
20:           return a.to_s.upcase <=> b.to_s.upcase
21:         end
22:         return a.to_i <=> b.to_i
23:       else
24:         return a.upcase <=> b.upcase
25:       end
26:     end
27:     version_a <=> version_b;
28:   end