aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs24
-rw-r--r--src/test.rs8
2 files changed, 24 insertions, 8 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 704b310..cf9d66e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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);