Syntax highlighting returnsgs
This commit is contained in:
parent
f0c928ec2c
commit
dc7dc67903
3 changed files with 16 additions and 5 deletions
|
@ -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
2
poetry.lock
generated
|
@ -278,4 +278,4 @@ tests = ["pytest", "pytest-cov"]
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "54f52a4692080706a62ade0de6c704d2919f5e5ae666f4769061b3b99d197889"
|
||||
content-hash = "4cd35828ffda0eff4507d9f3951ffaa8d44e17937dea6fa502e77e15b65a8ab9"
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue