DocumentationTools/IndexGenerator.py

changeset 406
eacf81fad150
parent 253
3ccdf551bde7
child 791
9ec2ac20e54e
equal deleted inserted replaced
405:374066392929 406:eacf81fad150
48 TemplatesListsStyleCSS.indexListPackagesTemplate 48 TemplatesListsStyleCSS.indexListPackagesTemplate
49 self.indexListModulesTemplate = \ 49 self.indexListModulesTemplate = \
50 TemplatesListsStyleCSS.indexListModulesTemplate 50 TemplatesListsStyleCSS.indexListModulesTemplate
51 self.indexListEntryTemplate = TemplatesListsStyleCSS.indexListEntryTemplate 51 self.indexListEntryTemplate = TemplatesListsStyleCSS.indexListEntryTemplate
52 else: 52 else:
53 self.headerTemplate = TemplatesListsStyle.headerTemplate % colors 53 self.headerTemplate = TemplatesListsStyle.headerTemplate.format(**colors)
54 self.footerTemplate = TemplatesListsStyle.footerTemplate % colors 54 self.footerTemplate = TemplatesListsStyle.footerTemplate.format(**colors)
55 self.indexBodyTemplate = TemplatesListsStyle.indexBodyTemplate % colors 55 self.indexBodyTemplate = \
56 TemplatesListsStyle.indexBodyTemplate.format(**colors)
56 self.indexListPackagesTemplate = \ 57 self.indexListPackagesTemplate = \
57 TemplatesListsStyle.indexListPackagesTemplate % colors 58 TemplatesListsStyle.indexListPackagesTemplate.format(**colors)
58 self.indexListModulesTemplate = \ 59 self.indexListModulesTemplate = \
59 TemplatesListsStyle.indexListModulesTemplate % colors 60 TemplatesListsStyle.indexListModulesTemplate.format(**colors)
60 self.indexListEntryTemplate = \ 61 self.indexListEntryTemplate = \
61 TemplatesListsStyle.indexListEntryTemplate % colors 62 TemplatesListsStyle.indexListEntryTemplate.format(**colors)
62 63
63 def remember(self, file, moduleDocument, basename=""): 64 def remember(self, file, moduleDocument, basename=""):
64 """ 65 """
65 Public method to remember a documentation file. 66 Public method to remember a documentation file.
66 67
117 """ 118 """
118 if packagename == "00index": 119 if packagename == "00index":
119 f = os.path.join(self.outputDir, "index") 120 f = os.path.join(self.outputDir, "index")
120 title = "Table of contents" 121 title = "Table of contents"
121 else: 122 else:
122 f = os.path.join(self.outputDir, "index-%s" % packagename) 123 f = os.path.join(self.outputDir, "index-{0}".format(packagename))
123 title = packagename 124 title = packagename
124 125
125 filename = joinext(f, ".html") 126 filename = joinext(f, ".html")
126 127
127 subpackages = "" 128 subpackages = ""
131 if package["subpackages"]: 132 if package["subpackages"]:
132 subpacks = package["subpackages"] 133 subpacks = package["subpackages"]
133 names = sorted(list(subpacks.keys())) 134 names = sorted(list(subpacks.keys()))
134 lst = [] 135 lst = []
135 for name in names: 136 for name in names:
136 link = joinext("index-%s" % name, ".html") 137 link = joinext("index-{0}".format(name), ".html")
137 lst.append(self.indexListEntryTemplate % { 138 lst.append(self.indexListEntryTemplate.format(**{
138 "Description" : subpacks[name], 139 "Description" : subpacks[name],
139 "Name" : name.split(".")[-1], 140 "Name" : name.split(".")[-1],
140 "Link" : link, 141 "Link" : link,
141 }) 142 }))
142 subpackages = self.indexListPackagesTemplate % { 143 subpackages = self.indexListPackagesTemplate.format(**{
143 "Entries" : "".join(lst), 144 "Entries" : "".join(lst),
144 } 145 })
145 146
146 # 2) modules 147 # 2) modules
147 if package["modules"]: 148 if package["modules"]:
148 mods = package["modules"] 149 mods = package["modules"]
149 names = sorted(list(mods.keys())) 150 names = sorted(list(mods.keys()))
151 for name in names: 152 for name in names:
152 link = joinext(name, ".html") 153 link = joinext(name, ".html")
153 nam = name.split(".")[-1] 154 nam = name.split(".")[-1]
154 if nam == "__init__": 155 if nam == "__init__":
155 nam = name.split(".")[-2] 156 nam = name.split(".")[-2]
156 lst.append(self.indexListEntryTemplate % { 157 lst.append(self.indexListEntryTemplate.format(**{
157 "Description" : mods[name], 158 "Description" : mods[name],
158 "Name" : nam, 159 "Name" : nam,
159 "Link" : link, 160 "Link" : link,
160 }) 161 }))
161 modules = self.indexListModulesTemplate % { 162 modules = self.indexListModulesTemplate.format(**{
162 "Entries" : "".join(lst), 163 "Entries" : "".join(lst),
163 } 164 })
164 165
165 doc = self.headerTemplate % { \ 166 doc = self.headerTemplate.format(**{ \
166 "Title" : title, 167 "Title" : title,
167 "Style" : self.stylesheet} + \ 168 "Style" : self.stylesheet}) + \
168 self.indexBodyTemplate % { \ 169 self.indexBodyTemplate.format(**{ \
169 "Title" : title, 170 "Title" : title,
170 "Description" : package["description"], 171 "Description" : package["description"],
171 "Subpackages" : subpackages, 172 "Subpackages" : subpackages,
172 "Modules" : modules, 173 "Modules" : modules,
173 } + \ 174 }) + \
174 self.footerTemplate 175 self.footerTemplate
175 176
176 f = open(filename, "w", encoding = "utf-8", newline = newline) 177 f = open(filename, "w", encoding = "utf-8", newline = newline)
177 f.write(doc) 178 f.write(doc)
178 f.close() 179 f.close()
193 return 194 return
194 195
195 if basename: 196 if basename:
196 basename = basename.replace(os.sep, ".") 197 basename = basename.replace(os.sep, ".")
197 if not basename.endswith("."): 198 if not basename.endswith("."):
198 basename = "%s." % basename 199 basename = "{0}.".format(basename)
199 for package, element in list(self.packages.items()): 200 for package, element in list(self.packages.items()):
200 try: 201 try:
201 if basename: 202 if basename:
202 package = package.replace(basename,"") 203 package = package.replace(basename,"")
203 out = self.__writeIndex(package, element, newline) 204 out = self.__writeIndex(package, element, newline)
204 except IOError as v: 205 except IOError as v:
205 sys.stderr.write("%s error: %s\n" % (package, v[1])) 206 sys.stderr.write("{0} error: {1}\n".format(package, v[1]))
206 else: 207 else:
207 if out: 208 if out:
208 sys.stdout.write("%s ok\n" % out) 209 sys.stdout.write("{0} ok\n".format(out))
209 210
210 sys.stdout.write("Indices written.\n") 211 sys.stdout.write("Indices written.\n")
211 sys.stdout.flush() 212 sys.stdout.flush()
212 sys.stderr.flush() 213 sys.stderr.flush()

eric ide

mercurial