added hard line breaks support

This commit is contained in:
2026-02-08 18:09:54 -05:00
parent 164cb5d980
commit 00d44090a8
8 changed files with 85 additions and 11 deletions

View File

@@ -60,10 +60,14 @@ def convert_markdown(
context: str,
issues: list[ValidationIssue],
renderer: str = "default",
hard_line_breaks: bool = False,
) -> str | None:
if renderer == "default":
try:
return md_lib.markdown(markdown_text, extensions=["extra"], output_format="html5")
extensions = ["extra"]
if hard_line_breaks:
extensions.append("nl2br")
return md_lib.markdown(markdown_text, extensions=extensions, output_format="html5")
except Exception as exc: # pragma: no cover - depends on markdown internals
issues.append(ValidationIssue(f"Markdown conversion failed: {exc}", context=context))
return None
@@ -78,14 +82,17 @@ def convert_markdown(
issues.append(ValidationIssue("py-gfm extension not found: GithubFlavoredMarkdownExtension", context=context))
return None
try:
return md_lib.markdown(markdown_text, extensions=[extension_class()], output_format="html5")
extensions = [extension_class()]
if hard_line_breaks:
extensions.append("nl2br")
return md_lib.markdown(markdown_text, extensions=extensions, output_format="html5")
except Exception as exc: # pragma: no cover - depends on markdown internals
issues.append(ValidationIssue(f"Markdown conversion failed: {exc}", context=context))
return None
if renderer == "pandoc":
try:
result = subprocess.run(
["pandoc", "--from=markdown", "--to=html5"],
["pandoc", f"--from={'markdown+hard_line_breaks' if hard_line_breaks else 'markdown'}", "--to=html5"],
input=markdown_text,
text=True,
capture_output=True,