Support headings in package comments
diff mbox

Message ID 20170426044353.10774-1-lfleischer@archlinux.org
State Accepted, archived
Headers show

Commit Message

Lukas Fleischer April 26, 2017, 4:43 a.m. UTC
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
---
 aurweb/scripts/rendercomment.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

Patch
diff mbox

diff --git a/aurweb/scripts/rendercomment.py b/aurweb/scripts/rendercomment.py
index f32c827..9c0aa6a 100755
--- a/aurweb/scripts/rendercomment.py
+++ b/aurweb/scripts/rendercomment.py
@@ -67,6 +67,20 @@  class GitCommitsExtension(markdown.extensions.Extension):
         md.preprocessors.add('git-commits', preprocessor, '_end')
 
 
+class HeadingTreeprocessor(markdown.treeprocessors.Treeprocessor):
+    def run(self, doc):
+        for elem in doc:
+            if elem.tag == 'h1':
+                elem.tag = 'h5'
+            elif elem.tag in ['h2', 'h3', 'h4', 'h5']:
+                elem.tag = 'h6'
+
+
+class HeadingExtension(markdown.extensions.Extension):
+    def extendMarkdown(self, md, md_globals):
+        md.treeprocessors.add('heading', HeadingTreeprocessor(md), '_end')
+
+
 def get_comment(conn, commentid):
     cur = conn.execute('SELECT PackageComments.Comments, PackageBases.Name '
                        'FROM PackageComments INNER JOIN PackageBases '
@@ -88,8 +102,10 @@  def main():
     text, pkgbase = get_comment(conn, commentid)
     html = markdown.markdown(text, extensions=['fenced_code',
                                                LinkifyExtension(),
-                                               GitCommitsExtension(pkgbase)])
-    allowed_tags = bleach.sanitizer.ALLOWED_TAGS + ['p', 'pre']
+                                               GitCommitsExtension(pkgbase),
+                                               HeadingExtension()])
+    allowed_tags = bleach.sanitizer.ALLOWED_TAGS + \
+                   ['p', 'pre', 'h4', 'h5', 'h6']
     html = bleach.clean(html, tags=allowed_tags)
     save_rendered_comment(conn, commentid, html)