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
|