version sorting works

This commit is contained in:
Luke Sampson
2013-06-20 14:52:29 +10:00
parent ca56937c45
commit a47d9564a1

View File

@@ -12,17 +12,30 @@ function qsort($ary, $fn) {
return @() + $lesser + @($pivot) + $greater return @() + $lesser + @($pivot) + $greater
} }
function comp_ver($a, $b) { function version($ver) {
if($a -lt $b) { return -1 } $ver.split('.') | % {
if($a -gt $b) { return 1 } $num = $_ -as [int]
if($num) { $num } else { $_ }
}
}
function compare_versions($a, $b) {
$ver_a = version $a
$ver_b = version $b
for($i=0;$i -lt $ver_a.length;$i++) {
if($i -gt $ver_b.length) { return 1; }
if($ver_a[$i] -gt $ver_b[$i]) { return 1; }
if($ver_a[$i] -lt $ver_b[$i]) { return -1; }
}
if($ver_b.length -gt $ver_a.length) { return -1 }
return 0 return 0
} }
$test = "10.1.1,4.2.4,4.2.25,4.2,10.1.1.r0-preview,10.1.1.r2-final".split(',')
#comp_ver 'a', 1 #split_version '10.1.r0-preview'
$test = "fred,1,6,2,7,9,12,89,45,12,65,1,12,amy".split(',') compare_versions '4.2.4' '4.2.4.25'
$sorted = qsort $test compare_versions
#$test = "fred,1,6".split(',')
$sorted = qsort $test comp_ver
$sorted |% { write-host "'$_'," -no } $sorted |% { write-host "'$_'," -no }
write-host "" write-host ""