Implement navigation for specs

This commit is contained in:
str4d
2016-03-06 06:23:19 +00:00
parent b16fb65a89
commit 739b8dbb2d
16 changed files with 52 additions and 55 deletions

View File

@@ -3,6 +3,11 @@
{% block title %}{{ title }}{% endblock %} {% block title %}{{ title }}{% endblock %}
{% block lastupdated %}{{ meta.lastupdated }}{% endblock %} {% block lastupdated %}{{ meta.lastupdated }}{% endblock %}
{% block accuratefor %}{{ meta.accuratefor }}{% endblock %} {% block accuratefor %}{{ meta.accuratefor }}{% endblock %}
{% block content_nav %}
{% autoescape false %}
{{ toc }}
{% endautoescape %}
{% endblock %}
{% block content %} {% block content %}
{% autoescape false %} {% autoescape false %}
{{ body }} {{ body }}

View File

@@ -5,6 +5,8 @@ Blockfile and Hosts Database Specification
:lastupdated: November 2014 :lastupdated: November 2014
:accuratefor: 0.9.17 :accuratefor: 0.9.17
.. contents::
Overview Overview
======== ========

View File

@@ -5,61 +5,12 @@ Common structures Specification
:lastupdated: February 2016 :lastupdated: February 2016
:accuratefor: 0.9.24 :accuratefor: 0.9.24
.. contents::
This document describes some data types common to all I2P protocols, like This document describes some data types common to all I2P protocols, like
[I2NP]_, [I2CP]_, [SSU]_, etc. [I2NP]_, [I2CP]_, [SSU]_, etc.
Index
=====
+--------------------------+
| Type |
+==========================+
| Boolean_ |
+--------------------------+
| Certificate_ |
+--------------------------+
| Date_ |
+--------------------------+
| `Delivery Instructions`_ |
+--------------------------+
| Destination_ |
+--------------------------+
| Hash_ |
+--------------------------+
| Integer_ |
+--------------------------+
| KeysAndCert_ |
+--------------------------+
| Lease_ |
+--------------------------+
| LeaseSet_ |
+--------------------------+
| Mapping_ |
+--------------------------+
| PrivateKey_ |
+--------------------------+
| PublicKey_ |
+--------------------------+
| RouterAddress_ |
+--------------------------+
| RouterIdentity_ |
+--------------------------+
| RouterInfo_ |
+--------------------------+
| `Session Tag`_ |
+--------------------------+
| Signature_ |
+--------------------------+
| PrivateKey_ |
+--------------------------+
| SigningPublicKey_ |
+--------------------------+
| String_ |
+--------------------------+
| TunnelId_ |
+--------------------------+
Common type specification Common type specification
========================= =========================

View File

@@ -5,6 +5,8 @@ Configuration File Specification
:lastupdated: February 2016 :lastupdated: February 2016
:accuratefor: 0.9.25 :accuratefor: 0.9.25
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Low-level Cryptography Specification
:lastupdated: December 2014 :lastupdated: December 2014
:accuratefor: 0.9.17 :accuratefor: 0.9.17
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Datagram Specification
:lastupdated: July 2014 :lastupdated: July 2014
:accuratefor: 0.9.14 :accuratefor: 0.9.14
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ GeoIP File Specification
:lastupdated: December 2013 :lastupdated: December 2013
:accuratefor: 0.9.9 :accuratefor: 0.9.9
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ I2CP Specification
:lastupdated: June 2015 :lastupdated: June 2015
:accuratefor: 0.9.21 :accuratefor: 0.9.21
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ I2NP Specification
:lastupdated: January 2016 :lastupdated: January 2016
:accuratefor: 0.9.24 :accuratefor: 0.9.24
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Plugin Specification
:lastupdated: February 2016 :lastupdated: February 2016
:accuratefor: 0.9.25 :accuratefor: 0.9.25
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ SSU Protocol Specification
:lastupdated: November 2015 :lastupdated: November 2015
:accuratefor: 0.9.24 :accuratefor: 0.9.24
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Streaming Library Specification
:lastupdated: June 2015 :lastupdated: June 2015
:accuratefor: 0.9.20 :accuratefor: 0.9.20
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Tunnel Creation Specification
:lastupdated: January 2016 :lastupdated: January 2016
:accuratefor: 0.9.24 :accuratefor: 0.9.24
.. contents::
.. _tunnelCreate.overview: .. _tunnelCreate.overview:

View File

@@ -5,6 +5,8 @@ Tunnel Message Specification
:lastupdated: February 2014 :lastupdated: February 2014
:accuratefor: 0.9.11 :accuratefor: 0.9.11
.. contents::
Overview Overview
======== ========

View File

@@ -5,6 +5,8 @@ Software Update Specification
:lastupdated: May 2015 :lastupdated: May 2015
:accuratefor: 0.9.20 :accuratefor: 0.9.20
.. contents::
Overview Overview
======== ========

View File

@@ -1,5 +1,9 @@
import codecs import codecs
from docutils.core import publish_parts from docutils.core import (
publish_doctree,
publish_from_doctree,
publish_parts,
)
from flask import ( from flask import (
abort, abort,
g, g,
@@ -13,7 +17,7 @@ from flask import (
) )
import os.path import os.path
from i2p2www import SPEC_DIR from i2p2www import PROPOSAL_DIR, SPEC_DIR
from i2p2www import helpers from i2p2www import helpers
@@ -64,6 +68,7 @@ def spec_show(name, txt=False):
if txt: if txt:
# Strip out RST # Strip out RST
content = content.replace('.. meta::\n', '') content = content.replace('.. meta::\n', '')
content = content.replace('.. contents::\n\n', '')
content = content.replace('.. raw:: html\n\n', '') content = content.replace('.. raw:: html\n\n', '')
content = content.replace('\n.. [', '\n[') content = content.replace('\n.. [', '\n[')
content = content.replace(']_.', '].') content = content.replace(']_.', '].')
@@ -81,11 +86,21 @@ def spec_show(name, txt=False):
r.mimetype = 'text/plain' r.mimetype = 'text/plain'
return r return r
# publish the post with docutils # Render the ToC
doctree = publish_doctree(source=rendered_content)
bullet_list = doctree[1][1]
doctree.clear()
doctree.append(bullet_list)
toc = publish_from_doctree(doctree, writer_name='html')
# Remove the ToC from the main document
rendered_content = rendered_content.replace('.. contents::\n', '')
# publish the spec with docutils
parts = publish_parts(source=rendered_content, source_path=SPEC_DIR, writer_name="html") parts = publish_parts(source=rendered_content, source_path=SPEC_DIR, writer_name="html")
meta = get_metadata_from_meta(parts['meta']) meta = get_metadata_from_meta(parts['meta'])
return render_template('spec/show.html', title=parts['title'], body=parts['fragment'], name=name, meta=meta) return render_template('spec/show.html', title=parts['title'], toc=toc, body=parts['fragment'], name=name, meta=meta)
def spec_show_txt(name): def spec_show_txt(name):
return spec_show(name, True) return spec_show(name, True)