pathx/utils/
macros.rs

1// pathx macros
2
3/// template!() macro
4#[macro_export]
5macro_rules! template {
6    ($template:expr, { $($key:ident : $val:expr),* $(,)? }) => {{
7        use std::collections::HashMap;
8        let mut map = HashMap::new();
9        $(
10            map.insert(stringify!($key), $val);
11        )*
12        $crate::utils::templating::render_template($template, &map)
13    }};
14}
15
16// Test
17#[cfg(test)]
18mod tests {
19    #[test]
20    fn test_template_macro() {
21        let path = template!("src/{dir}/{name}.rs", {
22            dir: "core",
23            name: "lib"
24        });
25
26        assert_eq!(path.to_str().unwrap(), "src/core/lib.rs");
27    }
28}