overhaul article group sorting
server preferrence is now taken into account
This commit is contained in:
parent
1a593fee69
commit
c2a6bf36a7
1 changed files with 27 additions and 16 deletions
|
|
@ -757,38 +757,49 @@ end
|
||||||
|
|
||||||
def group_subject_sort(subj)
|
def group_subject_sort(subj)
|
||||||
print "Sorting articles\n"
|
print "Sorting articles\n"
|
||||||
|
serverhash = {}
|
||||||
|
for i in (0...@serverlist.length)
|
||||||
|
serverhash[@serverlist[i]] = i
|
||||||
|
end
|
||||||
sort_arr = []
|
sort_arr = []
|
||||||
for i in (0...@groups[subj]["subject"].length)
|
for i in (0...@groups[subj]["subject"].length)
|
||||||
print "subj sort #{@groups[subj]["subject"][i]}\n" if Debuglevel > 2
|
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]["messages"][i]}\n" if Debuglevel > 2
|
||||||
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 += ["#{@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
|
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
|
@groups[subj].clear
|
||||||
sort_arr.collect{|i|
|
sort_arr.collect{|i|
|
||||||
i =~ /^(.*) (<[^<]*>) (\d+) (\S*)$/ || i =~ /^(.*) \[<[^<]*>\] (\d+) (\S*)$/
|
|
||||||
if @groups[subj].has_key?("messages")
|
if @groups[subj].has_key?("messages")
|
||||||
@groups[subj]["messages"] += [$2]
|
@groups[subj]["subject"] += [i[0]]
|
||||||
@groups[subj]["ids"] += [$3.to_i]
|
@groups[subj]["messages"] += [i[1]]
|
||||||
@groups[subj]["subject"] += [$1]
|
@groups[subj]["ids"] += [i[2]]
|
||||||
@groups[subj]["servers"] += [$4]
|
@groups[subj]["servers"] += [i[3]]
|
||||||
else
|
else
|
||||||
@groups[subj]["messages"] = [$2]
|
@groups[subj]["subject"] = [i[0]]
|
||||||
@groups[subj]["ids"] = [$3.to_i]
|
@groups[subj]["messages"] = [i[1]]
|
||||||
@groups[subj]["subject"] = [$1]
|
@groups[subj]["ids"] = [i[2]]
|
||||||
@groups[subj]["servers"] = [$4]
|
@groups[subj]["servers"] = [i[3]]
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
def ward_sort(a, b)
|
def ward_sort(a, b)
|
||||||
a =~ /^(.*) (<[^<]*> \d+ \S*)$/
|
c = a.to_s.split(/([0-9]+)/)
|
||||||
c = $1.to_s.split(/([0-9]+)/)
|
d = b.to_s.split(/([0-9]+)/)
|
||||||
b =~ /^(.*) (<[^<]*> \d+ \S*)$/
|
|
||||||
d = $1.to_s.split(/([0-9]+)/)
|
|
||||||
|
|
||||||
for x in c
|
for x in c
|
||||||
y = d.shift
|
y = d.shift
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue