Expose tokens in markdown api, update article rendering

This commit is contained in:
2026-08-25 03:08:01 +02:00
parent 1250ead61a
commit 3abb6ce8fe
2 changed files with 12 additions and 13 deletions
+8 -10
View File
@@ -1,6 +1,6 @@
from typing import cast
from markdown_it import MarkdownIt
from markdown_it.token import Token
from markdown_it.token import Token as Token
from pygments import highlight as pygments_highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import get_lexer_by_name
@@ -32,7 +32,7 @@ def highlight(code: str, lang: str, attrs: str) -> str:
md = MarkdownIt(options_update={"highlight": highlight})
def extract_summary(tokens: list[Token]) -> Markup:
def render_summary(tokens: list[Token]) -> Markup:
if not tokens or tokens[0].type != "paragraph_open" or tokens[0].hidden:
raise MarkdownError(
"Body does not start with a paragraph; set 'summary' in frontmatter"
@@ -43,11 +43,9 @@ def extract_summary(tokens: list[Token]) -> Markup:
raise MarkdownError("Content has no paragraph to use as summary")
def parse(body: str, include_summary: bool = True) -> tuple[Markup, Markup | None]:
tokens = md.parse(body)
if include_summary:
summary = extract_summary(tokens)
else:
summary = None
content = Markup(md.renderer.render(tokens, md.options, {}))
return content, summary
def render(tokens: list[Token]) -> Markup:
return Markup(md.renderer.render(tokens, md.options, {}))
def parse(body: str) -> list[Token]:
return md.parse(body)
+4 -3
View File
@@ -29,9 +29,10 @@ class Article(Content):
self.title: str = meta["title"]
def write(self) -> None:
content, summary = md.parse(self.read_body(), self.summary is None)
if summary is not None:
self.summary = summary
tokens = md.parse(self.read_body())
if self.summary is None:
self.summary = md.render_summary(tokens)
content = md.render(tokens)
template = self.site.jinja_env.get_template("article.html")
html = template.render(page=self, content=content, site=self.site)