def make_page(*xml_files): template = tree.fromstring(TEMPLATE) index = make_index(xml_files) for letter in sorted(index): add_letter(template, letter, index[letter]) add_summary(template, index.values()) return template
def make_page(*xml_files): "Extract directives from xml_files and return XML index tree." template = tree.fromstring(TEMPLATE) names = [vl.get('id') for vl in template.iterfind('.//variablelist')] directive_groups = {name: collections.defaultdict(list) for name in names} formatting = {} for page in xml_files: try: _extract_directives(directive_groups, formatting, page) except Exception: raise ValueError("failed to process " + page) return _make_page(template, directive_groups, formatting)
def add_summary(template, indexpages): count = 0 pages = set() for group in indexpages: count += len(group) for info in group: refname, section, purpose, realname = info pages.add((realname, section)) refsect1 = tree.fromstring(SUMMARY) template.append(refsect1) para = template.find(".//para[@id='counts']") para.text = COUNTS.format(count=count, pages=len(pages))
def make_page(*xml_files): "Extract directives from xml_files and return XML index tree." template = tree.fromstring(TEMPLATE) names = [vl.get('id') for vl in template.iterfind('.//variablelist')] directive_groups = {name:collections.defaultdict(list) for name in names} formatting = {} for page in xml_files: try: _extract_directives(directive_groups, formatting, page) except Exception: raise ValueError("failed to process " + page) return _make_page(template, directive_groups, formatting)
def _make_section(template, name, directives, formatting): varlist = template.find(".//*[@id='{}']".format(name)) for varname, manpages in sorted(directives.items()): entry = tree.SubElement(varlist, 'varlistentry') term = tree.SubElement(entry, 'term') display = tree.fromstring(formatting[varname]) term.append(display) para = tree.SubElement(tree.SubElement(entry, 'listitem'), 'para') b = None for manpage, manvolume in sorted(set(manpages)): if b is not None: b.tail = ', ' b = tree.SubElement(para, 'citerefentry') c = tree.SubElement(b, 'refentrytitle') c.text = manpage c.attrib['target'] = varname d = tree.SubElement(b, 'manvolnum') d.text = manvolume entry.tail = '\n\n'