From 4ad4696962da6e3567cb49a8eb16354bd0fc9e94 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Sat, 5 Jul 2025 02:28:34 -0400 Subject: [PATCH] fix markdown extension loading --- pyproject.toml | 2 +- src/zona/markdown.py | 51 +++++++++++++++++++++----------------------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3bc2cab..ec3a6f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,7 @@ reportUnusedCallResult = false reportCallInDefaultInitializer = false enableTypeIgnoreComments = true reportIgnoreCommentWithoutRule = false -allowedUntypedLibraries = ["frontmatter", "pygments"] +allowedUntypedLibraries = ["frontmatter", "pygments", "pymdownx"] [tool.ruff] line-length = 70 diff --git a/src/zona/markdown.py b/src/zona/markdown.py index 8bfc253..1a72804 100644 --- a/src/zona/markdown.py +++ b/src/zona/markdown.py @@ -1,11 +1,10 @@ -from markdown import Markdown +from collections.abc import Sequence from rich import print +from markdown import Markdown from typing import Any, override from pathlib import Path -from marko.inline import Link, Image -from marko.block import FencedCode -from marko.html_renderer import HTMLRenderer -from marko.parser import Parser + +from pygments.formatters.html import HtmlFormatter from zona.config import ZonaConfig from zona.layout import Layout @@ -14,14 +13,11 @@ from markdown.extensions.codehilite import CodeHiliteExtension from markdown.extensions.extra import ExtraExtension from markdown.extensions.smarty import SmartyExtension from markdown.extensions.sane_lists import SaneListExtension +from markdown.extensions.md_in_html import MarkdownInHtmlExtension from pymdownx.inlinehilite import InlineHiliteExtension +from pymdownx.escapeall import EscapeAllExtension import xml.etree.ElementTree as etree - -from pygments import highlight -from pygments.lexers import get_lexer_by_name, TextLexer -from pygments.formatters import HtmlFormatter - from zona import util from zona.models import Item from zona.log import get_logger @@ -137,25 +133,26 @@ def md_to_html( layout: Layout | None = None, item_map: dict[Path, Item] | None = None, ) -> str: + extensions: Sequence[Any] = [ + ExtraExtension(), + SmartyExtension(), + "pymdownx.tilde", + "pymdownx.caret", + "pymdownx.smartsymbols", + InlineHiliteExtension(css_class="codehilite"), + SaneListExtension(), + MarkdownInHtmlExtension(), + EscapeAllExtension(hardbreak=True), + ] if config: - md = Markdown( - extensions=[ - CodeHiliteExtension( - linenums=False, - noclasses=False, - pygments_style=config.markdown.syntax_highlighting.theme, - ), - ExtraExtension(), - SmartyExtension(), - "pymdownx.tilde", - "pymdownx.caret", - "pymdownx.smartsymbols", - InlineHiliteExtension(css_class="codehilite"), - SaneListExtension(), - ] + extensions.append( + CodeHiliteExtension( + linenums=False, + noclasses=False, + pygments_style=config.markdown.syntax_highlighting.theme, + ) ) - else: - md = Markdown() + md = Markdown(extensions=extensions) if resolve_links: if source is None or layout is None or item_map is None: raise TypeError(