MoonBit port of beautiful-mermaid: render Mermaid diagrams to SVG and ASCII/Unicode text.
Dependencies
///|
test "simple_td" (it : @test.Test) {
let svg = render_mermaid(
(
#|graph TD
#|A --> B
),
)
it.write(svg)
it.snapshot(filename="simple_td.svg")
}///|
test {
let ascii = render_mermaid_ascii(
(
#|graph LR
#|A --> B
),
)
inspect(
ascii,
content=(
#|┌───┐ ┌───┐
#|│ │ │ │
#|│ A ├────►│ B │
#|│ │ │ │
#|└───┘ └───┘
),
)
}///|
test {
let options = @model.RenderOptions::{
bg: Some("#18181B"),
fg: Some("#FAFAFA"),
line: Some("#7aa2f7"),
accent: None,
muted: None,
surface: None,
border: None,
font: Some("Inter"),
padding: None,
node_spacing: None,
layer_spacing: None,
transparent: Some(true),
layout_engine: None,
}
let svg = render_mermaid(
(
#|graph TD
#|A --> B
),
options~,
)
assert_true(svg.contains("--bg:#18181B"))
assert_true(svg.contains("--line:#7aa2f7"))
}///|
test {
let svg = render_mermaid_with_theme_name(
(
#|graph TD
#|A --> B
),
"tokyo-night",
)
assert_true(svg.contains("--bg:#1a1b26"))
assert_true(svg.contains("--accent:#7aa2f7"))
}///|
test {
let svg = render_mermaid_with_theme_name(
(
#|graph TD
#|A --> B
),
"github-dark",
)
assert_true(svg.contains("--bg:#0d1117"))
assert_true(svg.contains("--accent:#4493f8"))
}test {
let svg = try! render_mermaid(
(
#|graph TD
#|A --> B
),
)
assert_true(svg.has_prefix("<svg "))
assert_true(svg.contains(">A</text>"))
}test {
let ascii = try! render_mermaid_ascii(
(
#|graph LR
#|A --> B
),
options={
use_ascii: true,
padding_x: 5,
padding_y: 5,
box_border_padding: 1,
},
)
assert_true(ascii.contains("A"))
assert_true(ascii.contains("B"))
}fn render_mermaid_with_theme_name(text : String, theme_name : String, options? : RenderOptions) -> String raise MermaidErrortest {
let svg = try! render_mermaid_with_theme_name(
(
#|graph TD
#|A --> B
),
"TOKYO NIGHT",
)
assert_true(svg.contains("--bg:#1a1b26"))
}Install
Download zipMoonBit port of beautiful-mermaid: render Mermaid diagrams to SVG and ASCII/Unicode text.
Dependencies