From cc7796764447d0adf981d57bcd89d03b18b3b49e Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Tue, 7 May 2002 22:07:17 +0000 Subject: [PATCH] fix the fucking sort; so much for testing --- trunk/ripnews/news/article.rb | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index f2b835d..3d8e101 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -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