irongit

A rust macro that allows regular expression creation through independent files. Allows fully typed named groups.

append RE to each struct

huncholanehuncholaneauthored
parent 904972ccommit 1cd02febaefe06f40b5dc31abc1ca057a71da014Browse files

5 files changed, +10 -7

+1-1.cargo/config.toml
@@ -1,4 +1,4 @@
11 [alias]
22 tr = "test --release"
3-e = "run --example event"
3+e = "run --example"
44 b = "build"
+1-1README.md
@@ -42,7 +42,7 @@ use regex_macro::load_regex_files;
4242
4343 fn main() {
4444 load_regex_files!("tests/regex");
45- let events = Event::vec_from_file("tests/samples/events.txt").unwrap();
45+ let events = EventRE::vec_from_file("tests/samples/events.txt").unwrap();
4646 println!("{}", serde_json::to_string_pretty(&events).unwrap());
4747 }
4848 ```
+1-1examples/event.rs
@@ -2,6 +2,6 @@ use regex_macro::load_regex_files;
22
33 fn main() {
44 load_regex_files!("tests/regex");
5- let events = Event::vec_from_file("tests/samples/events.txt").unwrap();
5+ let events = EventRE::vec_from_file("tests/samples/events.txt").unwrap();
66 println!("{}", serde_json::to_string_pretty(&events).unwrap());
77 }
+6-3src/lib.rs
@@ -34,7 +34,8 @@ pub fn load_regex_files(input: TokenStream) -> TokenStream {
3434
3535 // Generate enum variants and compiled regex objects
3636 let variants = files.iter().map(|path| {
37- let variant_name = path.file_stem().unwrap().to_str().unwrap();
37+ let base = path.file_stem().unwrap().to_str().unwrap();
38+ let variant_name = &format!("{}RE", base);
3839 let ident = Ident::new(variant_name, proc_macro2::Span::call_site());
3940 quote! {
4041 pub #ident: regex::Regex
@@ -43,7 +44,8 @@ pub fn load_regex_files(input: TokenStream) -> TokenStream {
4344
4445 // Generate struct initialization
4546 let init_fields = files.iter().map(|path| {
46- let variant_name = path.file_stem().unwrap().to_str().unwrap();
47+ let base = path.file_stem().unwrap().to_str().unwrap();
48+ let variant_name = &format!("{}RE", base);
4749 let ident = Ident::new(variant_name, proc_macro2::Span::call_site());
4850 let file_path = path.to_str().unwrap();
4951 quote! {
@@ -73,7 +75,8 @@ pub fn load_regex_files(input: TokenStream) -> TokenStream {
7375 };
7476
7577 let structs = files.iter().map(|path| {
76- let variant_name = path.file_stem().unwrap().to_str().unwrap();
78+ let base = path.file_stem().unwrap().to_str().unwrap();
79+ let variant_name = &format!("{}RE", base);
7780 let ident = Ident::new(variant_name, proc_macro2::Span::call_site());
7881 let file_text = fs::read_to_string(path).unwrap();
7982 let re_str = format!(r"(?mx){}", file_text);
+1-1tests/test.rs
@@ -3,6 +3,6 @@ use regex_macro::load_regex_files;
33 #[test]
44 pub fn events() {
55 load_regex_files!("./tests/regex");
6- let events = Event::vec_from_file("./tests/samples/events.txt");
6+ let events = EventRE::vec_from_file("./tests/samples/events.txt");
77 assert!(events.unwrap().len() == 13)
88 }