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}