overhaul article group sorting

server preferrence is now taken into account
This commit is contained in:
Ward Wouts 2002-05-07 20:31:05 +00:00
parent 1a593fee69
commit c2a6bf36a7

View file

@ -757,38 +757,49 @@ end
def group_subject_sort(subj)
print "Sorting articles\n"
serverhash = {}
for i in (0...@serverlist.length)
serverhash[@serverlist[i]] = i
end
sort_arr = []
for i in (0...@groups[subj]["subject"].length)
print "subj sort #{@groups[subj]["subject"][i]}\n" if Debuglevel > 2
print "subj sort #{@groups[subj]["messages"][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
sort_arr += ["#{@groups[subj]["subject"][i]} #{@groups[subj]["messages"][i]} #{@groups[subj]["ids"][i]} #{@groups[subj]["servers"][i]}"]
sort_arr += [ [
@groups[subj]["subject"][i],
@groups[subj]["messages"][i],
@groups[subj]["ids"][i],
@groups[subj]["servers"][i]
] ]
end
sort_arr.sort!{|a,b| ward_sort(a, b)}
sort_arr.sort!{|a,b|
r = ward_sort(a[0], b[0])
r = serverhash[a[3]] <=> serverhash[b[3]] if r ==0
return r
}
@groups[subj].clear
sort_arr.collect{|i|
i =~ /^(.*) (<[^<]*>) (\d+) (\S*)$/ || i =~ /^(.*) \[<[^<]*>\] (\d+) (\S*)$/
if @groups[subj].has_key?("messages")
@groups[subj]["messages"] += [$2]
@groups[subj]["ids"] += [$3.to_i]
@groups[subj]["subject"] += [$1]
@groups[subj]["servers"] += [$4]
@groups[subj]["subject"] += [i[0]]
@groups[subj]["messages"] += [i[1]]
@groups[subj]["ids"] += [i[2]]
@groups[subj]["servers"] += [i[3]]
else
@groups[subj]["messages"] = [$2]
@groups[subj]["ids"] = [$3.to_i]
@groups[subj]["subject"] = [$1]
@groups[subj]["servers"] = [$4]
@groups[subj]["subject"] = [i[0]]
@groups[subj]["messages"] = [i[1]]
@groups[subj]["ids"] = [i[2]]
@groups[subj]["servers"] = [i[3]]
end
print "subject sort: #{$1}\n" if Debuglevel > 2
print "subject sort: #{i[0]}\n" if Debuglevel > 2
print "server: #{i[3]}\n" if Debuglevel > 2
}
end
def ward_sort(a, b)
a =~ /^(.*) (<[^<]*> \d+ \S*)$/
c = $1.to_s.split(/([0-9]+)/)
b =~ /^(.*) (<[^<]*> \d+ \S*)$/
d = $1.to_s.split(/([0-9]+)/)
c = a.to_s.split(/([0-9]+)/)
d = b.to_s.split(/([0-9]+)/)
for x in c
y = d.shift