fix the fucking sort; so much for testing

This commit is contained in:
Ward Wouts 2002-05-07 22:07:17 +00:00
parent c2a6bf36a7
commit cc77967644

View file

@ -756,7 +756,7 @@ end
############################################################### ###############################################################
def group_subject_sort(subj) def group_subject_sort(subj)
print "Sorting articles\n" #print "Sorting articles\n"
serverhash = {} serverhash = {}
for i in (0...@serverlist.length) for i in (0...@serverlist.length)
serverhash[@serverlist[i]] = i serverhash[@serverlist[i]] = i
@ -768,16 +768,18 @@ def group_subject_sort(subj)
print "subj sort #{@groups[subj]["ids"][i]}\n" if Debuglevel > 2 print "subj sort #{@groups[subj]["ids"][i]}\n" if Debuglevel > 2
print "subj sort #{@groups[subj]["servers"][i]}\n" if Debuglevel > 2 print "subj sort #{@groups[subj]["servers"][i]}\n" if Debuglevel > 2
sort_arr += [ [ sort_arr += [ [
@groups[subj]["subject"][i], @groups[subj]["subject"][i].dup,
@groups[subj]["messages"][i], @groups[subj]["messages"][i].dup,
@groups[subj]["ids"][i], @groups[subj]["ids"][i].dup,
@groups[subj]["servers"][i] @groups[subj]["servers"][i].dup
] ] ] ]
end end
sort_arr.sort!{|a,b| sort_arr.sort!{|a,b|
r = ward_sort(a[0], b[0]) r = ward_sort(a[0], b[0])
r = serverhash[a[3]] <=> serverhash[b[3]] if r ==0 if r == 0
return r r = serverhash[a[3]] <=> serverhash[b[3]]
end
r
} }
@groups[subj].clear @groups[subj].clear
sort_arr.collect{|i| sort_arr.collect{|i|
@ -795,13 +797,14 @@ def group_subject_sort(subj)
print "subject sort: #{i[0]}\n" if Debuglevel > 2 print "subject sort: #{i[0]}\n" if Debuglevel > 2
print "server: #{i[3]}\n" if Debuglevel > 2 print "server: #{i[3]}\n" if Debuglevel > 2
} }
#print "Done sorting\n"
end end
def ward_sort(a, b) def ward_sort(a, b)
c = a.to_s.split(/([0-9]+)/) c = a.to_s.split(/([0-9]+)/)
d = b.to_s.split(/([0-9]+)/) d = b.to_s.split(/([0-9]+)/)
for x in c c.collect{|x|
y = d.shift y = d.shift
r = ((x.to_s =~ /^[0-9]+$/) && (y.to_s =~ /^[0-9]+$/)) ? r = ((x.to_s =~ /^[0-9]+$/) && (y.to_s =~ /^[0-9]+$/)) ?
(x.to_i <=> y.to_i) : (x.to_i <=> y.to_i) :
@ -809,8 +812,8 @@ def ward_sort(a, b)
if r != 0 if r != 0
return r return r
end end
end }
return -1 if (d) return -1 if (d != [])
return 0 return 0
end end