rust_automata_macros/annotations/mod.rs
1mod dsl;
2mod mermaid;
3
4pub use dsl::attr as dsl_attr;
5pub use mermaid::attr as mermaid_attr;
6
7/// Convert a path to the rust‑doc HTML file path.
8///
9/// `states::Open` → `"states/struct.Open.html"`
10/// `a::b::C` → `"a/b/struct.C.html"`
11/// `Top` → `"struct.Top.html"`
12#[allow(dead_code)]
13fn doc_link(p: &syn::Path) -> String {
14 let mut segs = p
15 .segments
16 .iter()
17 .map(|s| s.ident.to_string())
18 .collect::<Vec<_>>();
19 let last = segs.pop().unwrap(); // safe: at least one segment
20 if segs.is_empty() {
21 format!("struct.{last}.html")
22 } else {
23 format!("{}/struct.{last}.html", segs.join("/"))
24 }
25}