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