much smarter sorting
bunch o fixes
This commit is contained in:
parent
06fee68135
commit
1144fb8437
1 changed files with 50 additions and 19 deletions
|
|
@ -134,12 +134,16 @@ def get_groups
|
|||
return @groups
|
||||
end
|
||||
|
||||
def get_groupname
|
||||
return @group
|
||||
end
|
||||
|
||||
def get_group_body(subj)
|
||||
result = []
|
||||
group_subject_sort(subj)
|
||||
for i in (0...@groups[subj]["messages"].length)
|
||||
unless @gotten.has_key?(@groups[subj]["messages"][i])
|
||||
print "getting article: #{i}\n" if Debuglevel > 0
|
||||
print "#{@groups[subj]}\n"
|
||||
begin
|
||||
print "Server: #{@groups[subj]["servers"][i]}\n"
|
||||
print "Messid: #{@groups[subj]["messages"][i]}\n"
|
||||
|
|
@ -154,6 +158,7 @@ def get_group_body(subj)
|
|||
end
|
||||
|
||||
def get_group_body_first(subj)
|
||||
group_subject_sort(subj)
|
||||
begin
|
||||
resp, id, messid, list = @connections[@groups[subj]["servers"][0]]["nntp"].body(@groups[subj]["messages"][0])
|
||||
rescue Net::NNTPReplyError
|
||||
|
|
@ -185,7 +190,6 @@ def get_group_body_rest(subj, file=nil)
|
|||
print "Caught Net::NNTPReplyError reading article #{@groups[subj]["messages"][0]}\n"
|
||||
return false
|
||||
end
|
||||
end
|
||||
print "getting article: #{subj}\n" if Debuglevel > 0
|
||||
print "message id: #{messid}\n" if Debuglevel > 0
|
||||
print "id: #{id}\n" if Debuglevel > 0
|
||||
|
|
@ -198,6 +202,7 @@ def get_group_body_rest(subj, file=nil)
|
|||
result += list
|
||||
end
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
|
|
@ -240,8 +245,6 @@ end
|
|||
|
||||
def group_subjects
|
||||
@groups = {}
|
||||
#subject_sort unless @sorted
|
||||
prev_subj = ""
|
||||
for i in (0...@subjects.length)
|
||||
print "group subjects: #{i} #{@subjects[i]}\n" if Debuglevel > 1
|
||||
if @subjects[i] =~ /(.*)\((\d+)\/(\d+)\)(.*)/ || @subjects[i] =~ /(.*)\[(\d+)\/(\d+)\](.*)/
|
||||
|
|
@ -253,14 +256,12 @@ def group_subjects
|
|||
number = 1
|
||||
total = 1
|
||||
end
|
||||
if j == prev_subj and number.to_i !=0
|
||||
if @groups.has_key?(j) and number.to_i !=0
|
||||
@groups[j]["messages"] += [ @messids[i] ]
|
||||
@groups[j]["ids"] += [ @ids[i].to_i ]
|
||||
@groups[j]["servers"] += [ @servers[i] ]
|
||||
@groups[j]["subject"] += [ @subjects[i] ]
|
||||
else
|
||||
unless number.to_i == 0
|
||||
prev_subj = j
|
||||
elsif number.to_i !=0
|
||||
@groups[j] = {}
|
||||
@groups[j]["total"] = total
|
||||
@groups[j]["messages"] = [ @messids[i] ]
|
||||
|
|
@ -269,7 +270,6 @@ def group_subjects
|
|||
@groups[j]["subject"] = [ @subjects[i] ]
|
||||
end
|
||||
end
|
||||
end
|
||||
@grouped = true
|
||||
end
|
||||
|
||||
|
|
@ -284,6 +284,8 @@ end
|
|||
|
||||
def group_update_newsrc(subject)
|
||||
for i in (0...@groups[subject]["messages"].length)
|
||||
# print "server: #{@groups[subject]["servers"][i]}\n"
|
||||
# print "id: #{@groups[subject]["ids"][i]}\n"
|
||||
@connections[@groups[subject]["servers"][i]]["newsrc"].mark(@group, @groups[subject]["ids"][i])
|
||||
end
|
||||
end
|
||||
|
|
@ -534,6 +536,35 @@ def subject_sort
|
|||
@sorted = true
|
||||
end
|
||||
|
||||
def group_subject_sort(subj)
|
||||
print "Sorting articles\n"
|
||||
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]}"]
|
||||
end
|
||||
sort_arr.sort!{|a,b| ward_sort(a, b)}
|
||||
@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]
|
||||
else
|
||||
@groups[subj]["messages"] = [$2]
|
||||
@groups[subj]["ids"] = [$3.to_i]
|
||||
@groups[subj]["subject"] = [$1]
|
||||
@groups[subj]["servers"] = [$4]
|
||||
end
|
||||
print "subject sort: #{$1}\n" if Debuglevel > 2
|
||||
}
|
||||
end
|
||||
|
||||
def ward_sort(a, b)
|
||||
a =~ /^(.*) (<[^<]*> \d+ \S*)$/
|
||||
c = $1.to_s.split(/([0-9]+)/)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue