include_re = re.compile (r'@include (.*?)$', re.M)
whitespaces = re.compile (r'\s+')
-ref_re = re.compile (r'(?ms)@(ruser|rprogram|ref|rlearning)\{(.*?)\}')
+ref_re = re.compile (r'(?ms)@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)\{(.*?)\}')
node_section_re = re.compile (r'@node (.*?)\n@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
+section_only_re = re.compile (r'@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
menu_entry_re = re.compile (r'\* (.*?)::')
untranslated_node_re = re.compile (r'(@node\s+.*\n@.*\n.*)(\s+@untranslated(.|\n)+?)(?=@node|@subheading|@menu|$)')
m.group (2) + ' ' + _doc (m.group (3)) + \
'\n@translationof ' + m.group (1) + '\n'
+def section_gettext (m):
+ return '@' + m.group (1) + ' ' + _doc (m.group (2)) + '\n'
+
def menu_entry_gettext (m):
return '* ' + _doc (m.group (1)) + '::'
-def process_file (filename):
+def process_file (filename, master_file_dir='.', included=False):
print "Processing %s" % filename
f = open (filename, 'r')
page = f.read ()
f.close()
- page = node_section_re.sub (node_gettext, page)
page = ref_re.sub (ref_gettext, page)
+ if not '\\n@translationof' in page:
+ page = node_section_re.sub (node_gettext, page)
+ page = section_only_re.sub (section_gettext, page)
page = menu_entry_re.sub (menu_entry_gettext, page)
page = page.replace ("""@c -- SKELETON FILE --
""", '')
f.write (page)
f.close ()
dir = os.path.dirname (filename)
+ if not included:
+ master_file_dir = dir
for file in includes:
p = os.path.join (dir, file)
if os.path.exists (p):
- process_file (p)
+ process_file (p, master_file_dir, included=True)
+ else:
+ p = os.path.join (master_file_dir, file)
+ if os.path.exists (p):
+ process_file (p, master_file_dir, included=True)
for filename in files:
process_file (filename)