#! /usr/bin/env python3 import sys import os import glob from fontTools.ttLib import identifierToTag import textwrap fontToolsDir = os.path.dirname(os.path.dirname(os.path.join(os.getcwd(), sys.argv[0]))) fontToolsDir= os.path.normpath(fontToolsDir) tablesDir = os.path.join(fontToolsDir, "Lib", "fontTools", "ttLib", "tables") docFile = os.path.join(fontToolsDir, "Doc/source/ttx.rst") names = glob.glob1(tablesDir, "*.py") modules = [] tables = [] for name in names: try: tag = identifierToTag(name[:-3]) except: pass else: modules.append(name[:-3]) tables.append(tag.strip()) modules.sort() tables.sort() with open(os.path.join(tablesDir, "__init__.py"), "w") as file: file.write(''' # DON'T EDIT! This file is generated by MetaTools/buildTableList.py. def _moduleFinderHint(): """Dummy function to let modulefinder know what tables may be dynamically imported. Generated by MetaTools/buildTableList.py. >>> _moduleFinderHint() """ ''') for module in modules: file.write("\tfrom . import %s\n" % module) file.write(''' if __name__ == "__main__": import doctest, sys sys.exit(doctest.testmod().failed) ''') begin = ".. begin table list\n" end = ".. end table list" with open(docFile) as f: doc = f.read() beginPos = doc.find(begin) assert beginPos > 0 beginPos = beginPos + len(begin) + 1 endPos = doc.find(end) lines = textwrap.wrap(", ".join(tables[:-1]) + " and " + tables[-1], 66) intro = "The following tables are currently supported::\n\n" blockquote = "\n".join(" "*4 + line for line in lines) + "\n" doc = doc[:beginPos] + intro + blockquote + "\n" + doc[endPos:] with open(docFile, "w") as f: f.write(doc)