diff options
| author | yuzu-eva <cafebabe@disroot.org> | 2025-03-12 00:50:54 +0100 |
|---|---|---|
| committer | yuzu-eva <cafebabe@disroot.org> | 2025-03-12 00:50:54 +0100 |
| commit | 50b26ac9bb1c9b1eaa9f88a9a23303deddb60a46 (patch) | |
| tree | 953864fa02d10474fbd2c98ca502d572a9a742d8 /parser.py | |
| parent | f283598c5a6203c11130cc6aacc1a60da21bd0d2 (diff) | |
fixed markdown issue in get_headers()
Diffstat (limited to 'parser.py')
| -rwxr-xr-x | parser.py | 33 |
1 files changed, 19 insertions, 14 deletions
@@ -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)) |
