1#![allow(unused_imports)]
2#![allow(unreachable_patterns)]
3#![allow(unused_variables)]
4#![allow(unused_assignments)]
5#![allow(unused_must_use)]
6#![allow(dead_code)]
7#![allow(non_snake_case)]
8#![allow(unused_parens)]
9#![allow(unused_mut)]
10
11extern crate proc_macro;
12
13use syn::{parse_macro_input, AttributeArgs, DataStruct, ItemFn};
14
15use crate::proc_macro::TokenStream;
16
17mod element_from;
18mod func;
19mod html_loader;
20mod parser;
21mod py_sql;
22mod string_util;
23
24#[proc_macro_attribute]
25pub fn expr(args: TokenStream, func: TokenStream) -> TokenStream {
26 let target_fn: ItemFn = syn::parse(func).unwrap();
28 let stream = func::impl_fn(
29 "",
30 &target_fn.sig.ident.to_string(),
31 &args.to_string(),
32 true,
33 true,
34 &[],
35 )
36 .into();
37 #[cfg(feature = "debug_mode")]
38 {
39 println!("............gen macro rexpr:\n {}", stream);
40 println!("............gen macro rexpr end............");
41 }
42 stream
43}
44
45#[proc_macro_attribute]
46pub fn rb_html(args: TokenStream, func: TokenStream) -> TokenStream {
47 let args = parse_macro_input!(args as AttributeArgs);
48 let target_fn = syn::parse(func).unwrap();
49 let stream = parser::impl_fn_html(&target_fn, &args);
50 #[cfg(feature = "debug_mode")]
51 {
52 println!("............gen macro xml:\n {}", stream);
53 println!("............gen macro xml end............");
54 }
55 stream
56}
57
58#[proc_macro_attribute]
60pub fn rb_py(args: TokenStream, func: TokenStream) -> TokenStream {
61 let args = parse_macro_input!(args as AttributeArgs);
62 let target_fn = syn::parse(func).unwrap();
63 let stream = parser::impl_fn_py(&target_fn, &args);
64 #[cfg(feature = "debug_mode")]
65 {
66 println!("............gen rb_pysql_fn:\n {}", stream);
67 println!("............gen rb_pysql_fn end............");
68 }
69 stream
70}