summaryrefslogtreecommitdiff
path: root/parser.py
diff options
context:
space:
mode:
authoryuzu-eva <cafebabe@disroot.org>2025-03-12 00:50:54 +0100
committeryuzu-eva <cafebabe@disroot.org>2025-03-12 00:50:54 +0100
commit50b26ac9bb1c9b1eaa9f88a9a23303deddb60a46 (patch)
tree953864fa02d10474fbd2c98ca502d572a9a742d8 /parser.py
parentf283598c5a6203c11130cc6aacc1a60da21bd0d2 (diff)
fixed markdown issue in get_headers()
Diffstat (limited to 'parser.py')
-rwxr-xr-xparser.py33
1 files changed, 19 insertions, 14 deletions
diff --git a/parser.py b/parser.py
index 860845f..4e62c1f 100755
--- a/parser.py
+++ b/parser.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
@@ -14,15 +16,18 @@ import parser
import shutil
import sys
-ENV = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'))
-
class MyRenderer(mistune.HTMLRenderer):
- def block_code(self, code, info=None):
- if not info:
- return '\n<pre><code>{}</code></pre>\n'.format(houdini.escape_html(code.strip()))
- lexer = get_lexer_by_name(info, stripall=True)
- formatter = HtmlFormatter()
- return highlight(code, lexer, formatter)
+ def blockcode(self, text, lang):
+ try:
+ lexer = get_lexer_by_name(lang, stripall=True)
+ except ClassNotFound:
+ lexer = None
+
+ if lexer:
+ formatter = HtmlFormatter()
+ return highlight(text, lexer, formatter)
+
+ return '\n<pre><code>{}</code></pre>\n'.format(houdini.escape_html(text.strip()))
def block_quote(self, content):
content = content[3:-5]
@@ -38,7 +43,7 @@ class MyRenderer(mistune.HTMLRenderer):
def heading(self, text, level):
hash_ = urllib.parse.quote_plus(text)
- return "<h%d id='%s'>%s <a class='header_linker' href='#%s'>[#]</a></h%d>\n" % (
+ return "<h%d id='%s'>%s <a class='header_linker' href='#%s'>[#]</a></h%d>" % (
level, hash_, text, hash_, level
)
@@ -69,7 +74,7 @@ def get_headers(html):
headers = []
thesmallestlevel = 7
- for node in root.xpath('//h1|//h2|//h3|//h4|//h5//h6'):
+ for node in root.xpath('//h1|//h2|//h3|//h4|//h5|//h6'):
level = int(node.tag[-1])
if level < thesmallestlevel:
thesmallestlevel = level
@@ -81,10 +86,10 @@ def get_headers(html):
headers = [(i[0], i[1] - thesmallestlevel, i[2]) for i in headers]
md_template = jinja2.Template("""
- {% for text, depth, link in contents %}
- {{ " " * depth }} - [{{ text }}]({{ link }})
- {% endfor %}
- """)
+{% for text, depth, link in contents %}
+{{ " " * depth }} - [{{ text }}]({{ link }})
+{% endfor %}
+ """)
return mistune.html(md_template.render(contents = headers))