[gtk-doc] db2html: implement toc for main page
- From: Stefan Sauer <stefkost src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-doc] db2html: implement toc for main page
- Date: Sun, 17 Dec 2017 14:59:20 +0000 (UTC)
commit 968fa0f5d7170531dec89a5c39e3957043f688e1
Author: Stefan Sauer <ensonic users sf net>
Date: Sun Dec 17 15:45:11 2017 +0100
db2html: implement toc for main page
tools/db2html.py | 19 +++++++++++++------
tools/templates/book.html | 10 ++++++++++
2 files changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/tools/db2html.py b/tools/db2html.py
index d1fe808..1e817ad 100644
--- a/tools/db2html.py
+++ b/tools/db2html.py
@@ -26,7 +26,7 @@ like the xsl-stylesheets would do. For that it resolves all the xml-includes.
TODO: convert the docbook-xml to html
- more templates
-- toc
+- refentry/index nav headers
Requirements:
sudo pip3 install anytree jinja2 lxml
@@ -95,10 +95,10 @@ CHUNK_PARAMS = {
}
TITLE_XPATH = {
- 'book': etree.XPath('//bookinfo/title/text()'),
- 'chapter': etree.XPath('//chapter/title/text()'),
- 'index': etree.XPath('//index/title/text()'),
- 'refentry': etree.XPath('//refentry/refmeta/refentrytitle/text()'),
+ 'book': etree.XPath('./bookinfo/title/text()'),
+ 'chapter': etree.XPath('./title/text()'),
+ 'index': etree.XPath('./title/text()'),
+ 'refentry': etree.XPath('./refmeta/refentrytitle/text()'),
}
# Jinja2 templates
@@ -163,8 +163,10 @@ def chunk(xml_node, parent=None):
# TODO: do we need to remove the xml-node from the parent?
# we generate toc from the files tree
# from copy import deepcopy
- # ..., xml=deepcopy(xml_node), ...
+ # sub_tree = deepcopy(xml_node)
# xml_node.getparent().remove(xml_node)
+ # # or:
+ # sub_tree = etree.ElementTree(xml_node).getroot()
parent = Node(xml_node.tag, parent=parent, xml=xml_node,
filename=gen_chunk_name(xml_node) + '.html',
title=get_chunk_title(xml_node))
@@ -201,6 +203,11 @@ def convert(out_dir, files, node):
if ix < len(files) - 1:
params['nav_next'] = files[ix + 1]
+ # page specific vars
+ # TODO: extract into functions?
+ if node.name == 'book':
+ params['toc'] = node.root
+
html.write(template.render(**params))
else:
logging.warning('Add template for "%s"', node.name)
diff --git a/tools/templates/book.html b/tools/templates/book.html
index bc16c64..ce37a3f 100644
--- a/tools/templates/book.html
+++ b/tools/templates/book.html
@@ -13,6 +13,16 @@
{{ navigation_main(title) }}
<hr>
</div>
+<div class="toc">
+ <dl class="toc">
+ {%- for item in toc.children recursive %}
+ <dt><a href="{{ item.filename|e }}">{{ item.title }}</a>
+ {%- if item.children -%}
+ <dd><dl>{{ loop(item.children) }}</dl></dd>
+ {%- endif %}</dt>
+ {%- endfor %}
+ </dl>
+</div>
</div>
</body>
</html>
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]