import os
import re
-from glob import glob
-possible_documents = ("Intro", "FAQ", "Tutorial", "UserGuide", "Extended", "Customization")
-lang_pattern = re.compile('^([a-z]{2})_')
+possible_documents = ("Intro", "FAQ", "Tutorial", "UserGuide", "EmbeddedObjects", "Extended", "Customization")
-def documents(prefix):
+def documents(srcdir, lang, dir_prefix = None):
+ '''Return documents for specified language. Translated files are in lang
+ directory.
+ '''
result = []
+ if dir_prefix is None:
+ dir_prefix = srcdir
for file in possible_documents:
- fname = prefix + file + '.lyx'
+ fname = os.path.join(srcdir, lang, file + '.lyx')
if os.access(fname, os.F_OK):
- result.append(fname)
+ result.append(os.path.join(dir_prefix, lang, file + '.lyx'))
+ else:
+ result.append(os.path.join(dir_prefix, file + '.lyx'))
return result
+def all_documents(srcdir, dir_prefix = None):
+ '''Return available languages and its documents'''
+ languages = {}
+ if dir_prefix is None:
+ dir_prefix = srcdir
+ for dir in os.listdir(srcdir):
+ if os.path.isdir(os.path.join(srcdir, dir)) and len(dir) == 2:
+ languages[dir] = documents(srcdir, dir, dir_prefix)
+ # general, English language
+ if 'en' not in languages.keys():
+ languages['en'] = documents(srcdir, 'en', dir_prefix)
+ return languages
+
+
def main(argv):
print """# This is a Makefile for the TOC.lyx files.
# It was automatically generated by %s
#
-# First come the rules for each xx_TOC.lyx file. Then comes the
+# First come the rules for each xx/TOC.lyx file. Then comes the
# TOCs target, which prints all the TOC files.
-""" % argv[0]
+""" % os.path.basename(argv[0])
# What are the languages available? And its documents?
- languages = {}
- for file in glob('*'):
- lang = lang_pattern.match(file)
- if lang:
- if lang.group(1) not in languages:
- languages[lang.group(1)] = [file]
- else:
- languages[lang.group(1)].append(file)
+ languages = all_documents(os.path.dirname(argv[0]), '')
# sort languages alphabetically
langs = languages.keys()
langs.sort()
- # The default language is english and doesn't need any prefix
- print 'TOC.lyx:', '.lyx '.join(possible_documents) + '.lyx'
- print '\tpython doc_toc.py'
- print
- tocs = ['TOC.lyx']
+ tocs = []
# Write rules for other languages
for lang in langs:
- toc_name = lang + '_TOC.lyx'
+ if lang != 'en':
+ toc_name = os.path.join(lang, 'TOC.lyx')
+ else:
+ # for English, because there is no 'en' directory
+ toc_name = 'TOC.lyx'
tocs.append(toc_name)
- languages[lang].remove(toc_name)
+ if toc_name in languages[lang]:
+ languages[lang].remove(toc_name)
+ languages[lang].sort()
- print toc_name + ':', ' '.join(languages[lang])
- print '\tpython doc_toc.py %s' % lang
+ print toc_name + ': $(srcdir)/' + ' $(srcdir)/'.join(languages[lang])
+ print '\tPYTHONPATH=$(top_builddir)/lib/lyx2lyx python -tt $(srcdir)/doc_toc.py %s .' % lang
print
# Write meta-rule to call all the other rules
- print 'TOCs:', ' '.join(tocs)
- print '\t@echo Made TOCs succesfully.'
+ print 'tocfiles =', ' '.join(tocs)
if __name__ == "__main__":