rbatis_sql_macro/
lib.rs

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 args = parse_macro_input!(args as AttributeArgs);
27    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/// support py_sql fn convert
59#[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}