• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#! /usr/bin/env python
2
3import sys
4import os
5import glob
6from fontTools.ttLib import identifierToTag
7import textwrap
8
9
10fontToolsDir = os.path.dirname(os.path.dirname(os.path.join(os.getcwd(), sys.argv[0])))
11fontToolsDir= os.path.normpath(fontToolsDir)
12tablesDir = os.path.join(fontToolsDir,
13		"Lib", "fontTools", "ttLib", "tables")
14docFile = os.path.join(fontToolsDir, "README.rst")
15
16names = glob.glob1(tablesDir, "*.py")
17
18modules = []
19tables = []
20for name in names:
21	try:
22		tag = identifierToTag(name[:-3])
23	except:
24		pass
25	else:
26		modules.append(name[:-3])
27		tables.append(tag.strip())
28
29modules.sort()
30tables.sort()
31
32
33with open(os.path.join(tablesDir, "__init__.py"), "w") as file:
34
35	file.write('''
36from __future__ import print_function, division, absolute_import
37from fontTools.misc.py23 import *
38
39# DON'T EDIT! This file is generated by MetaTools/buildTableList.py.
40def _moduleFinderHint():
41	"""Dummy function to let modulefinder know what tables may be
42	dynamically imported. Generated by MetaTools/buildTableList.py.
43
44		>>> _moduleFinderHint()
45	"""
46''')
47
48	for module in modules:
49		file.write("\tfrom . import %s\n" % module)
50
51	file.write('''
52if __name__ == "__main__":
53	import doctest, sys
54	sys.exit(doctest.testmod().failed)
55''')
56
57
58begin = ".. begin table list\n.. code::\n"
59end = ".. end table list"
60with open(docFile) as f:
61	doc = f.read()
62beginPos = doc.find(begin)
63assert beginPos > 0
64beginPos = beginPos + len(begin) + 1
65endPos = doc.find(end)
66
67lines = textwrap.wrap(", ".join(tables[:-1]) + " and " + tables[-1], 66)
68blockquote = "\n".join(" "*4 + line for line in lines) + "\n"
69
70doc = doc[:beginPos] + blockquote + doc[endPos:]
71
72with open(docFile, "w") as f:
73	f.write(doc)
74