Syntax highlighting returnsgs

This commit is contained in:
akp 2024-02-25 10:11:03 +00:00
parent f0c928ec2c
commit dc7dc67903
No known key found for this signature in database
GPG key ID: CF8D58F3DEB20755
3 changed files with 16 additions and 5 deletions

View file

@ -1,4 +1,7 @@
import mistune
import pygments
import pygments.lexers
import pygments.formatters
from collections.abc import Callable
@ -9,17 +12,24 @@ class LevelledHTMLRenderer(mistune.HTMLRenderer):
self.header_level_delta = header_level_delta
super().__init__(**kwargs)
def heading(self, text, level, **attrs):
def heading(self, text: str, level: int, **attrs) -> str:
if 1 > level + self.header_level_delta > 6:
raise ValueError(
f"cannot render header with level {level} as it would result in a header outside of 1 <= n <= 6"
f"cannot render header with level {level} as it would result in a level outside of 1 <= n <= 6"
)
return super().heading(text, level + self.header_level_delta, **attrs)
class SyntaxHighlightingHTMLRenderer(mistune.HTMLRenderer):
# TODO: Implement using Pygments
pass
def block_code(self, code: str, info: str | None = None) -> str:
if info is None:
return super().block_code(code)
return pygments.highlight(
code,
pygments.lexers.get_lexer_by_name(info),
pygments.formatters.HtmlFormatter(noclasses=True),
)
class CustomHTMLRenderer(LevelledHTMLRenderer, SyntaxHighlightingHTMLRenderer):

2
poetry.lock generated
View file

@ -278,4 +278,4 @@ tests = ["pytest", "pytest-cov"]
[metadata]
lock-version = "2.0"
python-versions = "^3.10"
content-hash = "54f52a4692080706a62ade0de6c704d2919f5e5ae666f4769061b3b99d197889"
content-hash = "4cd35828ffda0eff4507d9f3951ffaa8d44e17937dea6fa502e77e15b65a8ab9"

View file

@ -12,6 +12,7 @@ PyYAML = "^6.0.1"
fire = "^0.5.0"
rich = "^13.7.0"
mistune = "^3.0.2"
pygments = "^2.17.2"
[tool.poetry.group.dev.dependencies]