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
|
return @groups
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_groupname
|
||||||
|
return @group
|
||||||
|
end
|
||||||
|
|
||||||
def get_group_body(subj)
|
def get_group_body(subj)
|
||||||
result = []
|
result = []
|
||||||
|
group_subject_sort(subj)
|
||||||
for i in (0...@groups[subj]["messages"].length)
|
for i in (0...@groups[subj]["messages"].length)
|
||||||
unless @gotten.has_key?(@groups[subj]["messages"][i])
|
unless @gotten.has_key?(@groups[subj]["messages"][i])
|
||||||
print "getting article: #{i}\n" if Debuglevel > 0
|
print "getting article: #{i}\n" if Debuglevel > 0
|
||||||
print "#{@groups[subj]}\n"
|
|
||||||
begin
|
begin
|
||||||
print "Server: #{@groups[subj]["servers"][i]}\n"
|
print "Server: #{@groups[subj]["servers"][i]}\n"
|
||||||
print "Messid: #{@groups[subj]["messages"][i]}\n"
|
print "Messid: #{@groups[subj]["messages"][i]}\n"
|
||||||
|
|
@ -154,6 +158,7 @@ def get_group_body(subj)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_group_body_first(subj)
|
def get_group_body_first(subj)
|
||||||
|
group_subject_sort(subj)
|
||||||
begin
|
begin
|
||||||
resp, id, messid, list = @connections[@groups[subj]["servers"][0]]["nntp"].body(@groups[subj]["messages"][0])
|
resp, id, messid, list = @connections[@groups[subj]["servers"][0]]["nntp"].body(@groups[subj]["messages"][0])
|
||||||
rescue Net::NNTPReplyError
|
rescue Net::NNTPReplyError
|
||||||
|
|
@ -185,17 +190,17 @@ def get_group_body_rest(subj, file=nil)
|
||||||
print "Caught Net::NNTPReplyError reading article #{@groups[subj]["messages"][0]}\n"
|
print "Caught Net::NNTPReplyError reading article #{@groups[subj]["messages"][0]}\n"
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
|
||||||
print "getting article: #{subj}\n" if Debuglevel > 0
|
print "getting article: #{subj}\n" if Debuglevel > 0
|
||||||
print "message id: #{messid}\n" if Debuglevel > 0
|
print "message id: #{messid}\n" if Debuglevel > 0
|
||||||
print "id: #{id}\n" if Debuglevel > 0
|
print "id: #{id}\n" if Debuglevel > 0
|
||||||
print "server: #{@groups[subj]["servers"][i]}\n" if Debuglevel > 0
|
print "server: #{@groups[subj]["servers"][i]}\n" if Debuglevel > 0
|
||||||
print "full subject: #{@groups[subj]["subject"][i]}\n" if Debuglevel > 0
|
print "full subject: #{@groups[subj]["subject"][i]}\n" if Debuglevel > 0
|
||||||
@gotten[ @groups[subj]["messages"][i] ] = true
|
@gotten[ @groups[subj]["messages"][i] ] = true
|
||||||
if file
|
if file
|
||||||
list.collect{|line| file.print "#{line}\n"}
|
list.collect{|line| file.print "#{line}\n"}
|
||||||
else
|
else
|
||||||
result += list
|
result += list
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return result
|
return result
|
||||||
|
|
@ -240,8 +245,6 @@ end
|
||||||
|
|
||||||
def group_subjects
|
def group_subjects
|
||||||
@groups = {}
|
@groups = {}
|
||||||
#subject_sort unless @sorted
|
|
||||||
prev_subj = ""
|
|
||||||
for i in (0...@subjects.length)
|
for i in (0...@subjects.length)
|
||||||
print "group subjects: #{i} #{@subjects[i]}\n" if Debuglevel > 1
|
print "group subjects: #{i} #{@subjects[i]}\n" if Debuglevel > 1
|
||||||
if @subjects[i] =~ /(.*)\((\d+)\/(\d+)\)(.*)/ || @subjects[i] =~ /(.*)\[(\d+)\/(\d+)\](.*)/
|
if @subjects[i] =~ /(.*)\((\d+)\/(\d+)\)(.*)/ || @subjects[i] =~ /(.*)\[(\d+)\/(\d+)\](.*)/
|
||||||
|
|
@ -253,21 +256,18 @@ def group_subjects
|
||||||
number = 1
|
number = 1
|
||||||
total = 1
|
total = 1
|
||||||
end
|
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]["messages"] += [ @messids[i] ]
|
||||||
@groups[j]["ids"] += [ @ids[i].to_i ]
|
@groups[j]["ids"] += [ @ids[i].to_i ]
|
||||||
@groups[j]["servers"] += [ @servers[i] ]
|
@groups[j]["servers"] += [ @servers[i] ]
|
||||||
@groups[j]["subject"] += [ @subjects[i] ]
|
@groups[j]["subject"] += [ @subjects[i] ]
|
||||||
else
|
elsif number.to_i !=0
|
||||||
unless number.to_i == 0
|
@groups[j] = {}
|
||||||
prev_subj = j
|
@groups[j]["total"] = total
|
||||||
@groups[j] = {}
|
@groups[j]["messages"] = [ @messids[i] ]
|
||||||
@groups[j]["total"] = total
|
@groups[j]["ids"] = [ @ids[i].to_i ]
|
||||||
@groups[j]["messages"] = [ @messids[i] ]
|
@groups[j]["servers"] = [ @servers[i] ]
|
||||||
@groups[j]["ids"] = [ @ids[i].to_i ]
|
@groups[j]["subject"] = [ @subjects[i] ]
|
||||||
@groups[j]["servers"] = [ @servers[i] ]
|
|
||||||
@groups[j]["subject"] = [ @subjects[i] ]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@grouped = true
|
@grouped = true
|
||||||
|
|
@ -284,6 +284,8 @@ end
|
||||||
|
|
||||||
def group_update_newsrc(subject)
|
def group_update_newsrc(subject)
|
||||||
for i in (0...@groups[subject]["messages"].length)
|
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])
|
@connections[@groups[subject]["servers"][i]]["newsrc"].mark(@group, @groups[subject]["ids"][i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -534,6 +536,35 @@ def subject_sort
|
||||||
@sorted = true
|
@sorted = true
|
||||||
end
|
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)
|
def ward_sort(a, b)
|
||||||
a =~ /^(.*) (<[^<]*> \d+ \S*)$/
|
a =~ /^(.*) (<[^<]*> \d+ \S*)$/
|
||||||
c = $1.to_s.split(/([0-9]+)/)
|
c = $1.to_s.split(/([0-9]+)/)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue