28 lines
568 B
Python
28 lines
568 B
Python
|
|
#!/usr/bin/env python
|
||
|
|
|
||
|
|
from __future__ import print_function
|
||
|
|
|
||
|
|
import fileinput
|
||
|
|
import re
|
||
|
|
import sys
|
||
|
|
|
||
|
|
refs = {}
|
||
|
|
complete_file = ""
|
||
|
|
|
||
|
|
for line in open(sys.argv[1], 'r'):
|
||
|
|
complete_file += line
|
||
|
|
|
||
|
|
for m in re.findall('\[\[(.+)\]\]\n=+ ([^\n]+)', complete_file):
|
||
|
|
ref, title = m
|
||
|
|
refs["<<" + ref + ">>"] = "<<" + ref + ", " + title + ">>"
|
||
|
|
|
||
|
|
def translate(match):
|
||
|
|
try:
|
||
|
|
return refs[match.group(0)]
|
||
|
|
except KeyError:
|
||
|
|
return ""
|
||
|
|
|
||
|
|
rc = re.compile('|'.join(map(re.escape, sorted(refs, reverse=True))))
|
||
|
|
for line in open(sys.argv[1], 'r'):
|
||
|
|
print(rc.sub(translate, line), end='')
|