1da15a425c4226b1548d622c68bdfa106dc23e606jvr#! /usr/bin/env python 2da15a425c4226b1548d622c68bdfa106dc23e606jvr 3da15a425c4226b1548d622c68bdfa106dc23e606jvrimport sys 4da15a425c4226b1548d622c68bdfa106dc23e606jvrimport os 5da15a425c4226b1548d622c68bdfa106dc23e606jvrimport glob 6da15a425c4226b1548d622c68bdfa106dc23e606jvrfrom fontTools.ttLib import identifierToTag 7da15a425c4226b1548d622c68bdfa106dc23e606jvr 8da15a425c4226b1548d622c68bdfa106dc23e606jvr 99151a0ca0c2c958b4d37b75c9f5485e26915101ajvrfontToolsDir = os.path.dirname(os.path.dirname(os.path.join(os.getcwd(), sys.argv[0]))) 109151a0ca0c2c958b4d37b75c9f5485e26915101ajvrfontToolsDir= os.path.normpath(fontToolsDir) 119151a0ca0c2c958b4d37b75c9f5485e26915101ajvrtablesDir = os.path.join(fontToolsDir, 129151a0ca0c2c958b4d37b75c9f5485e26915101ajvr "Lib", "fontTools", "ttLib", "tables") 139151a0ca0c2c958b4d37b75c9f5485e26915101ajvrdocFile = os.path.join(fontToolsDir, "Doc", "documentation.html") 14da15a425c4226b1548d622c68bdfa106dc23e606jvr 15da15a425c4226b1548d622c68bdfa106dc23e606jvrnames = glob.glob1(tablesDir, "*.py") 16da15a425c4226b1548d622c68bdfa106dc23e606jvr 17da15a425c4226b1548d622c68bdfa106dc23e606jvrmodules = [] 189151a0ca0c2c958b4d37b75c9f5485e26915101ajvrtables = [] 19da15a425c4226b1548d622c68bdfa106dc23e606jvrfor name in names: 20da15a425c4226b1548d622c68bdfa106dc23e606jvr try: 21da15a425c4226b1548d622c68bdfa106dc23e606jvr tag = identifierToTag(name[:-3]) 22da15a425c4226b1548d622c68bdfa106dc23e606jvr except: 23da15a425c4226b1548d622c68bdfa106dc23e606jvr pass 24da15a425c4226b1548d622c68bdfa106dc23e606jvr else: 25da15a425c4226b1548d622c68bdfa106dc23e606jvr modules.append(name[:-3]) 269151a0ca0c2c958b4d37b75c9f5485e26915101ajvr tables.append(tag.strip()) 27da15a425c4226b1548d622c68bdfa106dc23e606jvr 28da15a425c4226b1548d622c68bdfa106dc23e606jvrmodules.sort() 299151a0ca0c2c958b4d37b75c9f5485e26915101ajvrtables.sort() 309151a0ca0c2c958b4d37b75c9f5485e26915101ajvr 31da15a425c4226b1548d622c68bdfa106dc23e606jvr 32da15a425c4226b1548d622c68bdfa106dc23e606jvrfile = open(os.path.join(tablesDir, "__init__.py"), "w") 33da15a425c4226b1548d622c68bdfa106dc23e606jvr 344ca01eab4a23ceaaf8316679304ba4176ccf76b4jvrfile.write("# DON'T EDIT! This file is generated by MetaTools/buildTableList.py.\n") 35da15a425c4226b1548d622c68bdfa106dc23e606jvrfile.write("def _moduleFinderHint():\n") 36da15a425c4226b1548d622c68bdfa106dc23e606jvrfile.write('\t"""Dummy function to let modulefinder know what tables may be\n') 37da15a425c4226b1548d622c68bdfa106dc23e606jvrfile.write('\tdynamically imported. Generated by MetaTools/buildTableList.py.\n') 38da15a425c4226b1548d622c68bdfa106dc23e606jvrfile.write('\t"""\n') 39da15a425c4226b1548d622c68bdfa106dc23e606jvrfor module in modules: 40e07cc6a9cae5b350332617e7ebf3a53821d5fe87Behdad Esfahbod file.write("\tfrom . import %s\n" % module) 41da15a425c4226b1548d622c68bdfa106dc23e606jvr 42da15a425c4226b1548d622c68bdfa106dc23e606jvrfile.close() 439151a0ca0c2c958b4d37b75c9f5485e26915101ajvr 449151a0ca0c2c958b4d37b75c9f5485e26915101ajvr 459151a0ca0c2c958b4d37b75c9f5485e26915101ajvrbegin = "<!-- begin table list -->" 469151a0ca0c2c958b4d37b75c9f5485e26915101ajvrend = "<!-- end table list -->" 479151a0ca0c2c958b4d37b75c9f5485e26915101ajvrdoc = open(docFile).read() 489151a0ca0c2c958b4d37b75c9f5485e26915101ajvrbeginPos = doc.find(begin) 499151a0ca0c2c958b4d37b75c9f5485e26915101ajvrassert beginPos > 0 509151a0ca0c2c958b4d37b75c9f5485e26915101ajvrbeginPos = beginPos + len(begin) + 1 519151a0ca0c2c958b4d37b75c9f5485e26915101ajvrendPos = doc.find(end) 529151a0ca0c2c958b4d37b75c9f5485e26915101ajvr 539151a0ca0c2c958b4d37b75c9f5485e26915101ajvrdoc = doc[:beginPos] + ", ".join(tables[:-1]) + " and " + tables[-1] + "\n" + doc[endPos:] 549151a0ca0c2c958b4d37b75c9f5485e26915101ajvr 559151a0ca0c2c958b4d37b75c9f5485e26915101ajvropen(docFile, "w").write(doc) 56