From d6e6988fcf0cd1bd8df68107a0bc9241401568c0 Mon Sep 17 00:00:00 2001 From: Andeya Date: Sun, 29 Sep 2024 15:23:54 +0800 Subject: [PATCH] chore(craft-macros): fix REGEX_STR --- crates/craft-macros/src/craft.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/crates/craft-macros/src/craft.rs b/crates/craft-macros/src/craft.rs index 85575445c..4624c9fe5 100644 --- a/crates/craft-macros/src/craft.rs +++ b/crates/craft-macros/src/craft.rs @@ -29,12 +29,12 @@ pub(crate) fn generate(input: Item) -> syn::Result { } } -const REGEX_STR: &'static str = - r#"(?s)#\s*\[\s*craft\s*\(\s*(?Phandler|endpoint)\s*(?P\(.*\))?\s*\)\s*\]"#; +const REGEX_STR: &'static str = r#"(?s)#\s*\[\s*(::)?\s*([a-zA-z][a-zA-z0-9]*\s*::\s*)*\s*craft\s*\(\s*(?Phandler|endpoint)\s*(?P\(.*\))?\s*\)\s*\]"#; fn take_method_macro(item_fn: &mut ImplItemFn) -> syn::Result> { let mut index: Option = None; let mut new_attr: Option = None; + let re = Regex::new(REGEX_STR).unwrap(); for (idx, attr) in &mut item_fn.attrs.iter().enumerate() { if !(match attr.path().segments.last() { Some(segment) => segment.ident == "craft", @@ -42,7 +42,6 @@ fn take_method_macro(item_fn: &mut ImplItemFn) -> syn::Result> }) { continue; } - let re = Regex::new(REGEX_STR).unwrap(); let attr_str = attr.to_token_stream().to_string().trim().to_owned(); if let Some(caps) = re.captures(&attr_str) { if let Some(name) = caps.name("name") { @@ -176,9 +175,9 @@ mod tests { let re = Regex::new(REGEX_STR).unwrap(); let texts = vec![ - r###"#[craft(endpoint(responses((status_code = 400, description = "[(Wrong)] request parameters."))))]"###, - r###"#[craft(handler())]"###, - r###"#[craft(endpoint(simple_text))] "###, + r###"#[:: craft(endpoint(responses((status_code = 400, description = "[(Wrong)] request parameters."))))]"###, + r###"#[ xx ::craft(handler())]"###, + r###"#[::xx::craft(endpoint(simple_text))] "###, r###"#[craft(handler)]"###, ]; for text in texts {