def createIndexPages(self): index = core.buildByTypeAndCatIndex(self.tree) cat_nodes = self.tree.find('globals.indexes').children for cat, node in cat_nodes.iteritems(): if node.children.has_key('hidefromindex'): continue print >> sys.stderr, 'Indexes for ' + node.text() filename = getIndexPagePath(self.tree, cat, self.out_path) with open(filename, 'wb') as f: title_node = self.tree.find(['Indexpage', cat, 'title']) if title_node: title = title_node.text() else: title = self.tree.find(['globals', 'indexes', cat]).text() res = self.index_page_template( title=title, cat=cat, tree=self.tree, now=datetime.datetime.utcnow(), by_subcat=index.get(cat, {}), time=time, # for now.strftime() iterable=lambda x: type(x) is list, core=core, html=HtmlHelper(self.error_logger, self.tree, os.path.dirname(filename), self.include_dirs), json=json) f.write(res.encode('utf-8'))
def createIndexPages(self): index = core.buildByTypeAndCatIndex(self.tree) cat_nodes = self.tree.find('globals.indexes').children for cat, node in cat_nodes.iteritems(): if node.children.has_key('hidefromindex'): continue print >>sys.stderr, 'Indexes for ' + node.text() filename = getIndexPagePath(self.tree, cat, self.out_path) with open(filename, 'wb') as f: title_node = self.tree.find(['Indexpage', cat, 'title']) if title_node: title = title_node.text() else: title = self.tree.find(['globals', 'indexes', cat]).text() res = self.index_page_template(title=title, cat=cat, tree=self.tree, now=datetime.datetime.utcnow(), by_subcat=index.get(cat, {}), time=time, # for now.strftime() iterable=lambda x: type(x) is list, core=core, html=HtmlHelper(self.error_logger, self.tree, os.path.dirname(filename)), json=json) f.write(res.encode('utf-8'))
def createIndexPages(self): index = core.buildByTypeAndCatIndex(self.tree) cat_nodes = self.tree.find("globals.indexes").children for cat, node in cat_nodes.iteritems(): print >> sys.stderr, "Indexes for " + node.text() filename = getIndexPagePath(self.tree, cat, self.out_path) with open(filename, "wb") as f: title_node = self.tree.find(["Indexpage", cat, "title"]) if title_node: title = title_node.text() else: title = self.tree.find(["globals", "indexes", cat]).text() res = self.index_page_template( title=title, cat=cat, tree=self.tree, now=datetime.datetime.utcnow(), by_subcat=index.get(cat, {}), time=time, # for now.strftime() iterable=lambda x: type(x) is list, core=core, html=HtmlHelper(self.error_logger, self.tree, os.path.dirname(filename)), json=json, ) f.write(res.encode("utf-8"))
def createPanelTree(self): """Create the file /panel/tree.js. This file contains the JavaScript information for building the naviation tree in the left frame. """ print >>sys.stderr, 'Creating Panel Tree' # Translate cat/element type from internal to user-readable. node = self.tree.find('globals.indexes') cats = [(k, v.text(), v) for k, v in node.children.iteritems() if not v.children.has_key('hidefromindex')] def getLocation(x): return (self.tree.entries[x[2].entry[0]].filename, self.tree.entries[x[2].entry[0]].line_no_begin) cats.sort(key=getLocation) ## print cats trees_data = [] index = core.buildByTypeAndCatIndex(self.tree) for cat, cat_title, cat_node in cats: ## print 'XXX', cat, cat_title ## if cat not in cats: ## continue # Skip if not in globals.indexes. ## print 'cat =', cat subcat_nodes = [] for subcat in sorted(index[cat].keys()): if type(index[cat][subcat]) is core.DddocTreeNode: node = index[cat][subcat] if 'hidefromindex' in node.children: continue # Skip if not to show in tree/index. ## print cat, node.key filename = getPagePath(cat, node.key, 'files') ## print filename subcat_node = [subcat, filename, '', []] # is uncategorized element ## print 'subcat_node = ', subcat_node else: # is category assert type(index[cat][subcat]) is list element_nodes = [] for node in sorted(index[cat][subcat]): if 'hidefromindex' in node.children: continue # Skip if not to show in tree/index. filename = getPagePath(cat, node.key, 'files') ## print filename element_nodes.append([node.key, filename, '', []]) ## print 'element_node = ', [node.key, '', '', []] filename = getIndexPagePath(self.tree, cat, 'files') anchor = self.html_helper.toGlossaryAnchor(subcat) link = filename + '#' + anchor subcat_node = [subcat, link, '', element_nodes] ## print 'subcat_node = ', subcat_node subcat_nodes.append(subcat_node) filename = getIndexPagePath(self.tree, cat, 'files') trees_data.append([cat_title, filename, '', subcat_nodes]) if cat_node.children.has_key('hidefromindex'): continue # Write out tree as JavaScript/JSON. ## print 'trees_data =', trees_data if not os.path.exists(os.path.join(self.out_path, 'panel')): os.makedirs(os.path.join(self.out_path, 'panel')) destPath = os.path.join(self.out_path, 'panel', 'tree.js') with open(destPath, 'wb') as f: f.write('var tree = %s;' % json.dumps(trees_data))