Skip to content

Commit 4ab10ec

Browse files
feat: add shorthand for regex (#11)
1 parent b8c840c commit 4ab10ec

2 files changed

Lines changed: 22 additions & 18 deletions

File tree

example/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ struct CreateUser {
1717
#[validate(url)]
1818
url: String,
1919

20-
#[validate(regex(expr = &COUNTRY_CODE_REGEX))]
20+
#[validate(regex = &COUNTRY_CODE_REGEX)]
2121
country_code: String,
2222

2323
#[validate(custom(function = validate_one_locale_required, error = OneLocaleRequiredError))]

packages/fortifier-macros/src/validations/regex.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,32 @@ use syn::{Expr, Ident, Result, meta::ParseNestedMeta};
55
use crate::validation::Validation;
66

77
pub struct Regex {
8-
pub expr: Expr,
8+
pub expression: Expr,
99
}
1010

1111
impl Validation for Regex {
1212
fn parse(meta: &ParseNestedMeta<'_>) -> Result<Self> {
13-
let mut expr: Option<Expr> = None;
14-
15-
meta.parse_nested_meta(|meta| {
16-
if meta.path.is_ident("expr") {
17-
expr = Some(meta.value()?.parse()?);
18-
19-
Ok(())
20-
} else {
21-
Err(meta.error("unknown parameter"))
22-
}
23-
})?;
13+
let mut expression: Option<Expr> = None;
14+
15+
if let Ok(value) = meta.value() {
16+
expression = Some(value.parse()?);
17+
} else {
18+
meta.parse_nested_meta(|meta| {
19+
if meta.path.is_ident("expression") {
20+
expression = Some(meta.value()?.parse()?);
21+
22+
Ok(())
23+
} else {
24+
Err(meta.error("unknown parameter"))
25+
}
26+
})?;
27+
}
2428

25-
let Some(expr) = expr else {
26-
return Err(meta.error("missing expr parameter"));
29+
let Some(expression) = expression else {
30+
return Err(meta.error("missing expression parameter"));
2731
};
2832

29-
Ok(Regex { expr })
33+
Ok(Regex { expression })
3034
}
3135

3236
fn is_async(&self) -> bool {
@@ -42,10 +46,10 @@ impl Validation for Regex {
4246
}
4347

4448
fn tokens(&self, expr: &TokenStream) -> TokenStream {
45-
let regex_expr = &self.expr;
49+
let expression = &self.expression;
4650

4751
quote! {
48-
#expr.validate_regex(#regex_expr)
52+
#expr.validate_regex(#expression)
4953
}
5054
}
5155
}

0 commit comments

Comments
 (0)