55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
 | |
| import py
 | |
| py.magic.autopath()
 | |
| import py
 | |
| pydir = py.path.local(py.__file__).dirpath()
 | |
| distdir = pydir.dirpath() 
 | |
| dist_url = 'http://codespeak.net/svn/py/dist/' 
 | |
| #issue_url = 'http://codespeak.net/issue/py-dev/' 
 | |
| 
 | |
| docdir = pydir.join('documentation') 
 | |
| reffile = docdir / 'talk' / '_ref.txt'
 | |
| 
 | |
| linkrex = py.std.re.compile('`(\S+)`_')
 | |
| 
 | |
| name2target = {}
 | |
| def addlink(linkname, linktarget): 
 | |
|     assert linkname and linkname != '/'
 | |
|     if linktarget in name2target: 
 | |
|         if linkname in name2target[linktarget]: 
 | |
|             return
 | |
|     name2target.setdefault(linktarget, []).append(linkname)
 | |
| 
 | |
| for textfile in docdir.visit(lambda x: x.ext == '.txt', 
 | |
|                              lambda x: x.check(dotfile=0)): 
 | |
|     for linkname in linkrex.findall(textfile.read()): 
 | |
|         if '/' in linkname: 
 | |
|             for startloc in ('', 'py'): 
 | |
|                 cand = distdir.join(startloc, linkname)
 | |
|                 if cand.check(): 
 | |
|                     rel = cand.relto(distdir)
 | |
|                     # we are in py/doc/x.txt 
 | |
|                     count = rel.count("/") + 1 
 | |
|                     target = '../' * count + rel 
 | |
|                     addlink(linkname, target) 
 | |
|                     break
 | |
|             else: 
 | |
|                 print "WARNING %s: link %r may be bogus" %(textfile, linkname) 
 | |
|         elif linkname.startswith('issue'): 
 | |
|             addlink(linkname, issue_url+linkname)
 | |
| 
 | |
| items = name2target.items() 
 | |
| items.sort() 
 | |
| 
 | |
| lines = []
 | |
| for linktarget, linknamelist in items: 
 | |
|     linknamelist.sort()
 | |
|     for linkname in linknamelist[:-1]: 
 | |
|         lines.append(".. _`%s`:" % linkname)
 | |
|     lines.append(".. _`%s`: %s" %(linknamelist[-1], linktarget))
 | |
| 
 | |
| reffile.write("\n".join(lines))
 | |
| print "wrote %d references to %r" %(len(lines), reffile)
 | |
| #print "last ten lines"
 | |
| #for x in lines[-10:]: print x
 |