89 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#!/usr/local/bin/ruby
 | 
						|
 | 
						|
# scan history
 | 
						|
 | 
						|
def usage
 | 
						|
  STDERR.print "usage: scanhist -h HISTORY ML-archive1 ML-archive2 ...\n"
 | 
						|
  exit 1
 | 
						|
end
 | 
						|
 | 
						|
def html_quote(s)
 | 
						|
  s.gsub!(/&/,"&")
 | 
						|
  s.gsub!(/</,"<")
 | 
						|
  s.gsub!(/>/,">")
 | 
						|
  s
 | 
						|
end
 | 
						|
 | 
						|
if ARGV.size == 0 then
 | 
						|
  usage
 | 
						|
end
 | 
						|
 | 
						|
histfile = nil
 | 
						|
 | 
						|
while ARGV[0] =~ /^-/
 | 
						|
  case ARGV.shift
 | 
						|
  when "-h"
 | 
						|
    histfile = ARGV.shift
 | 
						|
  else
 | 
						|
    usage
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
if histfile.nil? then
 | 
						|
  usage
 | 
						|
end
 | 
						|
 | 
						|
patched = {}
 | 
						|
histline = {}
 | 
						|
f = open(histfile)
 | 
						|
while f.gets
 | 
						|
  if /Subject: (\[w3m-dev.*\])/ then
 | 
						|
    patched[$1] = true
 | 
						|
    histline[$1] = $.
 | 
						|
  end
 | 
						|
end
 | 
						|
f.close
 | 
						|
 | 
						|
archive = {}
 | 
						|
subject = nil
 | 
						|
for fn in ARGV
 | 
						|
  f = open(fn)
 | 
						|
  while f.gets
 | 
						|
    if /^From / then
 | 
						|
       # beginning of a mail
 | 
						|
       subject = nil
 | 
						|
    elsif subject.nil? and /^Subject: / then
 | 
						|
       $_ =~ /Subject: (\[w3m-dev.*\])/
 | 
						|
       subject = $1
 | 
						|
       archive[subject] = [$_.chop.sub(/^Subject:\s*/,""),false,fn+"#"+($.).to_s]
 | 
						|
    elsif /^\+\+\+/ or /\*\*\*/ or  /filename=.*(patch|diff).*/ or /^begin \d\d\d/
 | 
						|
       archive[subject][1] = true
 | 
						|
    end
 | 
						|
  end
 | 
						|
  f.close
 | 
						|
end
 | 
						|
 | 
						|
print "<html><head><title>w3m patch configuration\n</title></head><body>\n"
 | 
						|
print "<pre>\n"
 | 
						|
for sub in archive.keys.sort
 | 
						|
  a = archive[sub]
 | 
						|
  if a[1] then
 | 
						|
    if patched[sub] then
 | 
						|
      print "[<a href=\"#{histfile}\##{histline[sub]}\">+</a>]"
 | 
						|
    else
 | 
						|
      print "[-]"
 | 
						|
    end
 | 
						|
    print "<a href=\"#{a[2]}\">"
 | 
						|
    print "<b>",html_quote(a[0]),"</b></a>\n"
 | 
						|
  else
 | 
						|
    if patched[sub] then
 | 
						|
      print "[<a href=\"#{histfile}\##{histline[sub]}\">o</a>]"
 | 
						|
    else
 | 
						|
      print "   "
 | 
						|
    end
 | 
						|
    print "<a href=\"#{a[2]}\">"
 | 
						|
    print "<b>",html_quote(a[0]),"</b></a>\n"
 | 
						|
  end
 | 
						|
end
 | 
						|
print "</pre></body></html>\n"
 |