Rendering diagrams¶
We support rendering SVG and ASCII diagrams:
- syntax_diagrams.render_svg(element: Element[T], /, *, max_width: int | None = None, settings: SvgRenderSettings | None = None, reverse: bool | None = None, href_resolver: HrefResolver[T] | None = None, convert_resolver_data: None = None) str ¶
- syntax_diagrams.render_svg(element: Element[U], /, *, max_width: int | None = None, settings: SvgRenderSettings | None = None, reverse: bool | None = None, href_resolver: HrefResolver[T] | None = None, convert_resolver_data: Callable[[U | None], T | None] | None) str
Render diagram as an SVG.
- Parameters:
node – root diagram node.
max_width – if given, overrides
max_width
fromsettings
.settings – rendering settings.
reverse – if given, overrides
reverse
fromsettings
.href_resolver – hyperlink resolver (may be used to transform text).
convert_resolver_data – a custom function to parse
resolver_data
, used when loading elements from JSON or other untrusted source.
- Returns:
a string with a rendered diagram.
- Throws:
- syntax_diagrams.render_text(element: Element[T], /, *, max_width: int | None = None, settings: TextRenderSettings | None = None, reverse: bool | None = None, href_resolver: HrefResolver[T] | None = None, convert_resolver_data: None = None) str ¶
- syntax_diagrams.render_text(element: Element[U], /, *, max_width: int | None = None, settings: TextRenderSettings | None = None, reverse: bool | None = None, href_resolver: HrefResolver[T] | None = None, convert_resolver_data: Callable[[U | None], T | None] | None) str
Render diagram as an SVG.
- Parameters:
node – root diagram node.
max_width – if given, overrides
max_width
fromsettings
.settings – rendering settings.
reverse – if given, overrides
reverse
fromsettings
.href_resolver – hyperlink resolver (may be used to transform text).
convert_resolver_data – a custom function to parse
resolver_data
, used when loading elements from JSON or other untrusted source.
- Returns:
a string with a rendered diagram.
- Throws:
Settings¶
- class syntax_diagrams.SvgRenderSettings(**kwargs)¶
Settings for SVG rendering engine.
- arrow_style: ArrowStyle = 'NONE'¶
Style of arrows to draw.
- comment_text_measure: TextMeasure¶
Service used to measure size of text inside of text nodes.
By default, set up to match default CSS settings.
- css_style: dict[str, dict[str, str]] | str | None¶
CSS style that should be embedded into the diagram.
- group_text_measure: TextMeasure¶
Service used to measure size of text of groups.
By default, set up to match default CSS settings.
- max_width: int = 600¶
Max width after which a sequence will be wrapped. This option is used to automatically convert sequences to stacks. Note that this is a suggestive option, there is no guarantee that the diagram will fit to its
max_width
.
- non_terminal_text_measure: TextMeasure¶
Service used to measure size of text inside of text nodes.
By default, set up to match default CSS settings.
- padding: tuple[int, int, int, int] = (1, 1, 1, 1)¶
Array of four positive integers denoting top, right, bottom and left padding between the diagram and its container.
- terminal_text_measure: TextMeasure¶
Service used to measure size of text inside of text nodes.
By default, set up to match default CSS settings.
- title: str | None = None¶
Title text that will be added to
<title>
element andaria-label
attribute.
- class syntax_diagrams.TextRenderSettings(**kwargs)¶
Settings for text rendering engine.
- max_width: int = 80¶
Max width after which a sequence will be wrapped. This option is used to automatically convert sequences to stacks. Note that this is a suggestive option, there is no guarantee that the diagram will fit to its
max_width
.
- padding: tuple[int, int, int, int] = (0, 0, 0, 0)¶
Array of four positive integers denoting top, right, bottom and left padding between the diagram and its container.
- class syntax_diagrams.EndClass(*values)¶
Controls how diagram start and end look like.
- COMPLEX = 'COMPLEX'¶
A
T
-shaped ending with vertical line doubled.Complex
- SIMPLE = 'SIMPLE'¶
A simple
T
-shaped ending.Simple
- class syntax_diagrams.ArrowStyle(*values)¶
Arrow shapes for SVG diagrams.
- BARB = 'BARB'¶
An error that consists of two lines.
node
- HARPOON = 'HARPOON'¶
Half of a triangle arrow.
node
- HARPOON_UP = 'HARPOON_UP'¶
Another half of a triangle arrow.
node
- NONE = 'NONE'¶
Arrows are not rendered.
node
- STEALTH = 'STEALTH'¶
Pointier triangle arrows.
node
- TRIANGLE = 'TRIANGLE'¶
Simple triangle arrows.
node
Errors¶
- class syntax_diagrams.LoadingError¶
Indicates incorrect diagram value.