Exemple #1
0
 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'))
Exemple #2
0
 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'))
Exemple #3
0
 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"))
Exemple #4
0
    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))
Exemple #5
0
    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))