diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-29 03:11:13 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-29 03:11:13 +0800 |
| commit | 03003aec99fc00c2a079bad9fb4e721432a6e6f0 (patch) | |
| tree | 3767548b240447c96e49ebd4519a9ae20d47626e /src | |
| parent | 58307e49e24bbbff55846147d97fbe60054486cc (diff) | |
feat: add CHANGELOG and simplify tmpl! macro syntax
Introduce a CHANGELOG.md file and update the `tmpl!` macro to use a
cleaner syntax with comma-separated key-value pairs instead of the `+=`
operator and parentheses-wrapped parameters
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 24 | ||||
| -rw-r--r-- | src/test.rs | 8 |
2 files changed, 24 insertions, 8 deletions
@@ -33,12 +33,12 @@ //! <<<crate_name>>> => Some(<<<crate_name>>>::exec(data, params).await), //! @@@ <<< //! ".trim().to_string()); -//! tmpl!(tmpl += { +//! tmpl!(tmpl, //! arms { -//! (crate_name = "my"), -//! (crate_name = "you") +//! crate_name = "my", +//! crate_name = "you", //! } -//! }); +//! ); //! // Output the expanded template //! let expanded = tmpl.to_string(); //! assert_eq!(expanded, " @@ -63,6 +63,22 @@ macro_rules! tmpl_param { #[macro_export] macro_rules! tmpl { + ($template:ident, $($name:ident { + $($key:ident = $value:expr),* $(,)? + }),* $(,)?) => {{ + $( + let $name = $template.add_impl(stringify!($name).to_string()); + $( + $name.push({ + let mut params = std::collections::HashMap::new(); + params.insert(stringify!($key).to_string(), $value.to_string()); + params + }); + )* + )* + }}; + + // Old syntax ($template:ident += { $($name:ident { $(($($key:ident = $value:expr),* $(,)?)),* diff --git a/src/test.rs b/src/test.rs index a5ef801..91407fc 100644 --- a/src/test.rs +++ b/src/test.rs @@ -15,12 +15,12 @@ mod tests { let mut tmpl = Template::from(input); tmpl_param!(tmpl, func_name = "my_func"); - tmpl!(tmpl += { + tmpl!(tmpl, arms { - (crate_name = "my"), - (crate_name = "you") + crate_name = "my", + crate_name = "you", } - }); + ); let expanded = tmpl.expand().unwrap(); assert_eq!(expanded, expect); |
