From c2a6bf36a79eda1aae13b0cee44fa56cc7b795e6 Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Tue, 7 May 2002 20:31:05 +0000 Subject: [PATCH] overhaul article group sorting server preferrence is now taken into account --- trunk/ripnews/news/article.rb | 43 ++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 8aec0e9..f2b835d 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -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