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