~ubuntu-branches/ubuntu/karmic/pypy/karmic

« back to all changes in this revision

Viewing changes to pypy/doc/tool/makeref.py

  • Committer: Bazaar Package Importer
  • Author(s): Alexandre Fayolle
  • Date: 2007-04-13 09:33:09 UTC
  • Revision ID: james.westby@ubuntu.com-20070413093309-yoojh4jcoocu2krz
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
import py
 
3
py.magic.autopath()
 
4
import pypy
 
5
pypydir = py.path.local(pypy.__file__).dirpath()
 
6
distdir = pypydir.dirpath() 
 
7
dist_url = 'http://codespeak.net/svn/pypy/dist/' 
 
8
issue_url = 'http://codespeak.net/issue/pypy-dev/' 
 
9
 
 
10
docdir = pypydir.join('doc') 
 
11
reffile = pypydir.join('doc', '_ref.txt') 
 
12
 
 
13
linkrex = py.std.re.compile('`(\S+)`_')
 
14
 
 
15
name2target = {}
 
16
def addlink(linkname, linktarget): 
 
17
    assert linkname and linkname != '/'
 
18
    if linktarget in name2target: 
 
19
        if linkname in name2target[linktarget]: 
 
20
            return
 
21
    name2target.setdefault(linktarget, []).append(linkname)
 
22
 
 
23
for textfile in docdir.visit(lambda x: x.ext == '.txt', 
 
24
                             lambda x: x.check(dotfile=0)): 
 
25
    for linkname in linkrex.findall(textfile.read()): 
 
26
        if '/' in linkname: 
 
27
            for startloc in ('', 'pypy'): 
 
28
                cand = distdir.join(startloc, linkname)
 
29
                if cand.check(): 
 
30
                    rel = cand.relto(distdir)
 
31
                    # we are in pypy/doc/x.txt 
 
32
                    target = '../../' + cand.relto(distdir)
 
33
                    addlink(linkname, target) 
 
34
                    break
 
35
            else: 
 
36
                print "WARNING %s: link %r may be bogus" %(textfile, linkname) 
 
37
        elif linkname.startswith('issue'): 
 
38
            addlink(linkname, issue_url+linkname)
 
39
 
 
40
items = name2target.items() 
 
41
items.sort() 
 
42
 
 
43
lines = []
 
44
for linktarget, linknamelist in items: 
 
45
    linknamelist.sort()
 
46
    for linkname in linknamelist[:-1]: 
 
47
        lines.append(".. _`%s`:" % linkname)
 
48
    lines.append(".. _`%s`: %s" %(linknamelist[-1], linktarget))
 
49
 
 
50
reffile.write("\n".join(lines))
 
51
print "wrote %d references to %r" %(len(lines), reffile)
 
52
#print "last ten lines"
 
53
#for x in lines[-10:]: print x