Подсветка кода с помощью 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 работать как с обычными блоками кода, так и с инлайном, или о каких-то лучших альтернативах?

Вернуться на верх