summaryrefslogtreecommitdiff
path: root/doc/doxygen-link.py
diff options
context:
space:
mode:
Diffstat (limited to 'doc/doxygen-link.py')
-rwxr-xr-xdoc/doxygen-link.py41
1 files changed, 32 insertions, 9 deletions
diff --git a/doc/doxygen-link.py b/doc/doxygen-link.py
index a1596d6f..910b8f8d 100755
--- a/doc/doxygen-link.py
+++ b/doc/doxygen-link.py
@@ -1,20 +1,43 @@
#!/usr/bin/env python
+from __future__ import print_function
import fileinput
import re
import sys
-links = {}
-for line in open(sys.argv[1], 'r'):
- m = re.match('^([^=]+)=([^\n]+)$', line);
- if m:
- link = "<a href=\"" + m.group(2) + "\" class=\"dg\">" + m.group(1) + "</a>"
- links[m.group(1)] = link
+rc_script = re.compile(r'\s*(.*\S)?\s*')
+
+def parse_dict(filename):
+ links = {}
+ for line in open(filename, 'r'):
+ m = re.match('^([^=]+)=([^\n]+)$', line);
+ if not m:
+ continue
+ name = m.group(1)
+ value = m.group(2)
+
+ # strip leading and trailing whitespace
+ m = rc_script.match(name)
+ if m:
+ name = m.group(1)
+
+ # skip special names
+ if name == '':
+ continue
+ if name == '\\':
+ continue
+
+ links[name] = "<a href=\"" + value + "\" class=\"dg\">" + name + "</a>"
+ return links
+
+links = parse_dict(sys.argv[1])
def translate(match):
- return links[match.group(0)]
+ return links[match.group(1)]
+
+# match for all names, with word boundaries \b
+rc = re.compile(r'\b(' + '|'.join(map(re.escape, sorted(links, reverse=True))) + r')\b')
-rc = re.compile('|'.join(map(re.escape, sorted(links, reverse=True))))
for line in open(sys.argv[2], 'r'):
- print(rc.sub(translate, line))
+ print(rc.sub(translate, line), end='')