diff options
Diffstat (limited to 'doc/doxygen-link.py')
-rwxr-xr-x | doc/doxygen-link.py | 41 |
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='') |