From 50b26ac9bb1c9b1eaa9f88a9a23303deddb60a46 Mon Sep 17 00:00:00 2001 From: yuzu-eva Date: Wed, 12 Mar 2025 00:50:54 +0100 Subject: fixed markdown issue in get_headers() --- parser.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'parser.py') 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
{}
\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
{}
\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 "%s [#]\n" % ( + return "%s [#]" % ( 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)) -- cgit v1.2.3