Markdown
Render markdown content into safe HTML with optional sanitization.
Installation
pip install "faststrap[markdown]"
Usage
from faststrap import Markdown
Markdown(
"# Hello\n\nThis is **safe** markdown.",
cls="prose",
)
Behavior
- Uses Python
markdown for conversion.
- Sanitizes output with
bleach by default.
- Raises a clear
ImportError if optional dependencies are missing.
Advanced Control
Markdown(
text,
sanitize=True,
extensions=["extra", "tables", "fenced_code"],
)
Security Notes
If you disable sanitization, only render trusted content.
API Reference
faststrap.components.display.markdown.Markdown(text, *, sanitize=True, extensions=None, allowed_tags=None, allowed_attributes=None, allowed_protocols=None, **kwargs)
Render markdown into a styled container.
This component is optional and requires extra dependencies:
pip install faststrap[markdown]
Source code in src/faststrap/components/display/markdown.py
| @register(category="display")
def Markdown(
text: str,
*,
sanitize: bool = True,
extensions: list[str] | None = None,
allowed_tags: list[str] | None = None,
allowed_attributes: dict[str, list[str]] | None = None,
allowed_protocols: list[str] | None = None,
**kwargs: Any,
) -> Div:
"""Render markdown into a styled container.
This component is optional and requires extra dependencies:
`pip install faststrap[markdown]`
"""
html = render_markdown(
text,
sanitize=sanitize,
extensions=extensions,
allowed_tags=allowed_tags,
allowed_attributes=allowed_attributes,
allowed_protocols=allowed_protocols,
)
user_cls = kwargs.pop("cls", "")
attrs: dict[str, Any] = {
"cls": merge_classes("faststrap-markdown", user_cls),
}
attrs.update(convert_attrs(kwargs))
return Div(NotStr(html), **attrs)
|