From a894ae84f07b33c78db170ea7f7e82a71f343fe5 Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Fri, 1 Apr 2016 23:28:07 +0000
Subject: [PATCH] Categorise specifications

---
 i2p2www/pages/spec/index.html      |  2 ++
 i2p2www/spec/common-structures.rst |  1 +
 i2p2www/spec/cryptography.rst      |  1 +
 i2p2www/spec/datagrams.rst         |  1 +
 i2p2www/spec/i2cp.rst              |  1 +
 i2p2www/spec/i2np.rst              |  1 +
 i2p2www/spec/ssu.rst               |  1 +
 i2p2www/spec/streaming.rst         |  1 +
 i2p2www/spec/tunnel-creation.rst   |  1 +
 i2p2www/spec/tunnel-message.rst    |  1 +
 i2p2www/spec/views.py              | 12 ++++++++++--
 11 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/i2p2www/pages/spec/index.html b/i2p2www/pages/spec/index.html
index 689b9d5e3..db397f341 100644
--- a/i2p2www/pages/spec/index.html
+++ b/i2p2www/pages/spec/index.html
@@ -27,6 +27,7 @@ If you find any inaccuracies in the documents linked below, please
 <table>
   <tr>
     <th>Title</th>
+    <th>Category</th>
     <th>Last updated</th>
     <th>Accurate for</th>
     <th>Link</th>
@@ -34,6 +35,7 @@ If you find any inaccuracies in the documents linked below, please
   {% for spec in specs %}
   <tr>
     <td>{{ spec.title }}</td>
+    <td>{{ spec.category }}</td>
     <td><time>{{ spec.lastupdated }}</time></td>
     <td>{{ spec.accuratefor }}</td>
     <td>
diff --git a/i2p2www/spec/common-structures.rst b/i2p2www/spec/common-structures.rst
index 3ec8bd0f7..56bbcfe5a 100644
--- a/i2p2www/spec/common-structures.rst
+++ b/i2p2www/spec/common-structures.rst
@@ -2,6 +2,7 @@
 Common structures Specification
 ===============================
 .. meta::
+    :category: Design
     :lastupdated: February 2016
     :accuratefor: 0.9.24
 
diff --git a/i2p2www/spec/cryptography.rst b/i2p2www/spec/cryptography.rst
index 651b5a9d1..cf78d0312 100644
--- a/i2p2www/spec/cryptography.rst
+++ b/i2p2www/spec/cryptography.rst
@@ -2,6 +2,7 @@
 Low-level Cryptography Specification
 ====================================
 .. meta::
+    :category: Design
     :lastupdated: December 2014
     :accuratefor: 0.9.17
 
diff --git a/i2p2www/spec/datagrams.rst b/i2p2www/spec/datagrams.rst
index 6cd2045d4..c57e53dc2 100644
--- a/i2p2www/spec/datagrams.rst
+++ b/i2p2www/spec/datagrams.rst
@@ -2,6 +2,7 @@
 Datagram Specification
 ======================
 .. meta::
+    :category: Protocols
     :lastupdated: July 2014
     :accuratefor: 0.9.14
 
diff --git a/i2p2www/spec/i2cp.rst b/i2p2www/spec/i2cp.rst
index e784e8092..9dd9432c8 100644
--- a/i2p2www/spec/i2cp.rst
+++ b/i2p2www/spec/i2cp.rst
@@ -2,6 +2,7 @@
 I2CP Specification
 ==================
 .. meta::
+    :category: Protocols
     :lastupdated: June 2015
     :accuratefor: 0.9.21
 
diff --git a/i2p2www/spec/i2np.rst b/i2p2www/spec/i2np.rst
index 023a5e68f..5257dc392 100644
--- a/i2p2www/spec/i2np.rst
+++ b/i2p2www/spec/i2np.rst
@@ -2,6 +2,7 @@
 I2NP Specification
 ==================
 .. meta::
+    :category: Protocols
     :lastupdated: January 2016
     :accuratefor: 0.9.24
 
diff --git a/i2p2www/spec/ssu.rst b/i2p2www/spec/ssu.rst
index 83d04b91d..f60d822ae 100644
--- a/i2p2www/spec/ssu.rst
+++ b/i2p2www/spec/ssu.rst
@@ -2,6 +2,7 @@
 SSU Protocol Specification
 ==========================
 .. meta::
+    :category: Transports
     :lastupdated: November 2015
     :accuratefor: 0.9.24
 
diff --git a/i2p2www/spec/streaming.rst b/i2p2www/spec/streaming.rst
index 77b82ab5d..793290c3d 100644
--- a/i2p2www/spec/streaming.rst
+++ b/i2p2www/spec/streaming.rst
@@ -2,6 +2,7 @@
 Streaming Library Specification
 ===============================
 .. meta::
+    :category: Protocols
     :lastupdated: June 2015
     :accuratefor: 0.9.20
 
diff --git a/i2p2www/spec/tunnel-creation.rst b/i2p2www/spec/tunnel-creation.rst
index 7ba79c1ae..d17adf51d 100644
--- a/i2p2www/spec/tunnel-creation.rst
+++ b/i2p2www/spec/tunnel-creation.rst
@@ -2,6 +2,7 @@
 Tunnel Creation Specification
 =============================
 .. meta::
+    :category: Design
     :lastupdated: January 2016
     :accuratefor: 0.9.24
 
diff --git a/i2p2www/spec/tunnel-message.rst b/i2p2www/spec/tunnel-message.rst
index c53d3345c..856099cd4 100644
--- a/i2p2www/spec/tunnel-message.rst
+++ b/i2p2www/spec/tunnel-message.rst
@@ -2,6 +2,7 @@
 Tunnel Message Specification
 ============================
 .. meta::
+    :category: Design
     :lastupdated: February 2014
     :accuratefor: 0.9.11
 
diff --git a/i2p2www/spec/views.py b/i2p2www/spec/views.py
index 100dd68cb..c43f4ddce 100644
--- a/i2p2www/spec/views.py
+++ b/i2p2www/spec/views.py
@@ -23,11 +23,18 @@ from i2p2www import helpers
 
 SPEC_METATAGS = {
     'accuratefor': None,
+    'category': '',
     'lastupdated': None,
     }
 
 SPEC_LIST_METATAGS = [
     ]
+SPEC_CATEGORY_SORT = {
+    'Design': 1,
+    'Transports': 2,
+    'Protocols': 3,
+    '': 999,
+    }
 
 
 def spec_index():
@@ -52,7 +59,7 @@ def spec_index():
             spec.update(meta)
             specs.append(spec)
 
-    specs.sort(key=lambda s: s['name'])
+    specs.sort(key=lambda s: (SPEC_CATEGORY_SORT[s['category']], s['title']))
     return render_template('spec/index.html', specs=specs)
 
 def spec_show(name, txt=False):
@@ -76,8 +83,9 @@ def spec_show(name, txt=False):
         # Change highlight formatter
         content = content.replace('{% highlight', "{% highlight formatter='textspec'")
         # Other string changes
-        content = content.replace('    :lastupdated', '- Last updated')
         content = content.replace('    :accuratefor', '- Accurate for')
+        content = content.replace('    :category', '- Category')
+        content = content.replace('    :lastupdated', '- Last updated')
 
     # render the post with Jinja2 to handle URLs etc.
     rendered_content = render_template_string(content)
-- 
GitLab