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