diff --git a/example/src/main.rs b/example/src/main.rs index fc69620..707dddd 100644 --- a/example/src/main.rs +++ b/example/src/main.rs @@ -17,7 +17,7 @@ struct CreateUser { #[validate(url)] url: String, - #[validate(regex(expr = &COUNTRY_CODE_REGEX))] + #[validate(regex = &COUNTRY_CODE_REGEX)] country_code: String, #[validate(custom(function = validate_one_locale_required, error = OneLocaleRequiredError))] diff --git a/packages/fortifier-macros/src/validations/regex.rs b/packages/fortifier-macros/src/validations/regex.rs index 70a3177..c6117fa 100644 --- a/packages/fortifier-macros/src/validations/regex.rs +++ b/packages/fortifier-macros/src/validations/regex.rs @@ -5,28 +5,32 @@ use syn::{Expr, Ident, Result, meta::ParseNestedMeta}; use crate::validation::Validation; pub struct Regex { - pub expr: Expr, + pub expression: Expr, } impl Validation for Regex { fn parse(meta: &ParseNestedMeta<'_>) -> Result { - let mut expr: Option = None; - - meta.parse_nested_meta(|meta| { - if meta.path.is_ident("expr") { - expr = Some(meta.value()?.parse()?); - - Ok(()) - } else { - Err(meta.error("unknown parameter")) - } - })?; + let mut expression: Option = None; + + if let Ok(value) = meta.value() { + expression = Some(value.parse()?); + } else { + meta.parse_nested_meta(|meta| { + if meta.path.is_ident("expression") { + expression = Some(meta.value()?.parse()?); + + Ok(()) + } else { + Err(meta.error("unknown parameter")) + } + })?; + } - let Some(expr) = expr else { - return Err(meta.error("missing expr parameter")); + let Some(expression) = expression else { + return Err(meta.error("missing expression parameter")); }; - Ok(Regex { expr }) + Ok(Regex { expression }) } fn is_async(&self) -> bool { @@ -42,10 +46,10 @@ impl Validation for Regex { } fn tokens(&self, expr: &TokenStream) -> TokenStream { - let regex_expr = &self.expr; + let expression = &self.expression; quote! { - #expr.validate_regex(#regex_expr) + #expr.validate_regex(#expression) } } }