fix: smolnet drops a callout marker that has no label
A `> [!kind]` with no title and an empty default label now loses the marker line entirely, leaving a plain blockquote, instead of printing an empty bold label. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
b6418b090f
commit
cf29dd7174
1 changed files with 8 additions and 3 deletions
|
|
@ -123,7 +123,9 @@ FOOTNOTE_REF = re.compile(r"\[\^([^\]]+)\]")
|
||||||
LINKREF_DEF = re.compile(r"^\[(\d+)\]:", re.MULTILINE)
|
LINKREF_DEF = re.compile(r"^\[(\d+)\]:", re.MULTILINE)
|
||||||
|
|
||||||
# The opening line of a GitHub/Obsidian-style callout, "> [!kind] title".
|
# The opening line of a GitHub/Obsidian-style callout, "> [!kind] title".
|
||||||
CALLOUT = re.compile(r"^([ ]{0,3}>[ ]?)\[!(\w+)\][ \t]*(.*)$", re.MULTILINE)
|
# The trailing newline is part of the match, so a marker with no label can be
|
||||||
|
# dropped whole instead of leaving the quote to open on a blank line.
|
||||||
|
CALLOUT = re.compile(r"^([ ]{0,3}>[ ]?)\[!(\w+)\][ \t]*(.*)\n?", re.MULTILINE)
|
||||||
|
|
||||||
|
|
||||||
def rot13(text):
|
def rot13(text):
|
||||||
|
|
@ -334,7 +336,7 @@ def rewrite_callouts(text, kinds):
|
||||||
The HTML build renders these as boxes (an <aside>, via a Markdown
|
The HTML build renders these as boxes (an <aside>, via a Markdown
|
||||||
extension in the site itself). gemtext has nothing to draw a box with, and
|
extension in the site itself). gemtext has nothing to draw a box with, and
|
||||||
a quote is the one block it does set apart, so the passage stays one; only
|
a quote is the one block it does set apart, so the passage stays one; only
|
||||||
the marker would otherwise print literally as "[!ontology]". Kinds not in
|
the marker would otherwise print literally as "[!aside]". Kinds not in
|
||||||
`kinds` are left alone, matching the HTML side, which also only boxes the
|
`kinds` are left alone, matching the HTML side, which also only boxes the
|
||||||
kinds it was told about.
|
kinds it was told about.
|
||||||
"""
|
"""
|
||||||
|
|
@ -347,9 +349,12 @@ def rewrite_callouts(text, kinds):
|
||||||
if kind not in kinds:
|
if kind not in kinds:
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
title = match.group(3).strip() or kinds[kind]
|
title = match.group(3).strip() or kinds[kind]
|
||||||
|
if not title:
|
||||||
|
# No label: the marker line goes, the quote stays.
|
||||||
|
return ""
|
||||||
# The label as a paragraph of its own inside the quote, so it can't run
|
# The label as a paragraph of its own inside the quote, so it can't run
|
||||||
# into the passage's first sentence.
|
# into the passage's first sentence.
|
||||||
return "%s**%s**\n>" % (match.group(1), title)
|
return "%s**%s**\n>\n" % (match.group(1), title)
|
||||||
|
|
||||||
return CALLOUT.sub(sub, text)
|
return CALLOUT.sub(sub, text)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue