diff options
| author | gennyble <gen@nyble.dev> | 2026-08-29 23:47:02 -0500 |
|---|---|---|
| committer | gennyble <gen@nyble.dev> | 2026-08-29 23:47:02 -0500 |
| commit | 832266e7e8c01dbfd236052cd9b740d545ffcffa (patch) | |
| tree | fce8563c20a35f0e7412da0d526baa5bca685b36 /src | |
| parent | a4f8c7f83e263141f6ad53856c2800d42b4e13da (diff) | |
Diffstat (limited to 'src')
| -rwxr-xr-x | src/lib.rs | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/src/lib.rs b/src/lib.rs index 9d8dd81..f9c6299 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -198,14 +198,14 @@ pub(crate) fn format_parse_fail(string: Cow<'static, str>, key: &str, arg: &str) } #[macro_export] -macro_rules! args { - ($name:ident as $($key:literal $(=$arg:literal)? $(?$help:literal)?),*) => { - let $name = vec![ - $( - Argument::new($key)$(.arg($arg))?$(.help($help))? - ),* - ]; +macro_rules! arg { + ($key:literal $(=$arg:literal)? $(?$help:literal)?) => { + Argument::new($key)$(.arg($arg))?$(.help($help))? }; + + ([$($key:literal),+] $(=$arg:literal)? $(?$help:literal)?) => { + Argument::new([$($key),+])$(.arg($arg))?$(.help($help))? + } } #[derive(Debug, PartialEq)] @@ -297,29 +297,30 @@ macro_rules! impl_boxxed { } } -impl_boxxed!(2, 3, 4, 5); +impl_boxxed!(1, 2, 3, 4, 5); #[cfg(test)] mod test { use crate::Argument; #[test] - fn args_macro_opt() { - args!(arg as "conf"); - - assert_eq!(arg, vec![Argument::new("conf")]) + fn arg_macro_opt() { + assert_eq!(arg!("conf"), Argument::new("conf")) } #[test] fn args_macro_optarg() { - args!(arg as "conf" = "path"); - - assert_eq!(arg, vec![Argument::new("conf").arg("path")]) + assert_eq!(arg!("conf" = "path"), Argument::new("conf").arg("path")) } #[test] fn args_macro_multiple() { - args!(args as "conf" = "path", "second" = "int", "third" = "float", "flag"); + let args = vec![ + arg!("conf" = "path"), + arg!("second" = "int"), + arg!("third" = "float"), + arg!("flag"), + ]; let expected = vec![ Argument::new("conf").arg("path"), @@ -333,15 +334,15 @@ mod test { #[test] fn args_macro_help() { - args!(args as - "one" = "arg" ?"Some argument help", - "two" = "int" ?"a longer \ - help message" - ); + let args = vec![ + arg!("one" = "arg" ?"Some argument help"), + arg!(["two", "2"] = "int" ?"a longer \ + help message"), + ]; let expected = vec![ Argument::new("one").arg("arg").help("Some argument help"), - Argument::new("two") + Argument::new(["two", "2"]) .arg("int") .help("a longer help message"), ]; |
