|
1 #!/usr/bin/env python |
|
2 # This Source Code Form is subject to the terms of the Mozilla Public |
|
3 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
5 |
|
6 |
|
7 """ |
|
8 Fix references to source files of the form [LOCpath] |
|
9 so that they are relative to a given source directory. |
|
10 |
|
11 Substitute the DOT-generated image map into the document. |
|
12 """ |
|
13 |
|
14 import os, sys, re |
|
15 |
|
16 (srcdir, ) = sys.argv[1:] |
|
17 srcdir = os.path.realpath(srcdir) |
|
18 |
|
19 f = re.compile(r'\[LOC(.*?)\]') |
|
20 |
|
21 def replacer(m): |
|
22 file = m.group(1) |
|
23 file = os.path.realpath(file) |
|
24 if not file.startswith(srcdir): |
|
25 raise Exception("File %s doesn't start with %s" % (file, srcdir)) |
|
26 |
|
27 file = file[len(srcdir) + 1:] |
|
28 return file |
|
29 |
|
30 s = re.compile(r'\[MAP(.*?)\]') |
|
31 |
|
32 def mapreplace(m): |
|
33 file = m.group(1) |
|
34 c = open(file).read() |
|
35 return c |
|
36 |
|
37 for line in sys.stdin: |
|
38 line = f.sub(replacer, line) |
|
39 line = s.sub(mapreplace, line) |
|
40 |
|
41 sys.stdout.write(line) |