Подсветка кода с помощью Markdown, Pygments и CodeHiliteExtension в Django. Обычные блоки кода работают хорошо, но встроенный код типа `print(«hi»)` не работает.
У меня проблема с Markdown, Pygments и CodeHiliteExtension в Django. У меня есть запись в блоге, написанная в Markdown, затем у меня есть save
функция следующего вида:
def save(self, *args, **kwargs):
# Convert Markdown to HTML with syntax highlighting
self.text_html = markdown.markdown(
str(self.text_markdown),
extensions=[
"extra",
"fenced_code",
CodeHiliteExtension(linenums=False, css_class="codehilite", pygments_style="lightbulb"),
],
)
self.preview_html = markdown.markdown(
str(self.preview_markdown),
extensions=[
"extra",
"fenced_code",
CodeHiliteExtension(linenums=False, css_class="codehilite", pygments_style="lightbulb"),
],
)
super().save(*args, **kwargs)
Он отлично работает - я имею в виду, что он выделяет полные блоки кода Mardown со всем синтаксисом, как это:
/``python
/print(«hi»)
/```
(без прямого слеша, я использовал его в качестве управляющего символа для форматирования сообщения).
Но встроенный код типа этого - ``print(«hi»)`` не работает.
Я пытался использовать вариации pymdownx.inlinehilite
в extensions
, но не смог заставить их работать. После некоторого гугления я нашел вот это - https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/ И сейчас мне удается добиться правильной подсветки инлайн-кода с помощью regex и ручного добавления недостающих символов, таких как - «:::language mycode», но это, конечно, далеко от чистого решения.
Я также рассматривал prism.js (который хорошо работает), но я хотел избежать использования дополнительного JavaScript. Но, может быть, это все-таки будет чище?
Так что я хотел спросить вас о более приятном способе заставить Pygments работать как с обычными блоками кода, так и с инлайном, или о каких-то лучших альтернативах?