nekopas2rust_macros/
lib.rs1mod components;
2#[cfg(any(
3 feature = "builder",
4 feature = "parser",
5 feature = "cipher",
6 feature = "math",
7 feature = "print"
8))]
9use components::prelude::*;
10
11#[cfg(feature = "builder")]
12#[proc_macro_derive(Builder, attributes(opt))]
13pub fn builder(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
14 let input = parse_macro_input!(input as DeriveInput);
15 let generate = build_app(&input);
16 generate.into()
17}
18
19#[cfg(feature = "print")]
20#[proc_macro_derive(Print, attributes(transporter))]
21pub fn print(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
22 let input = parse_macro_input!(input as DeriveInput);
23 let mut expanded = proc_macro2::TokenStream::new();
24 for_extend_token_stream(
25 &mut expanded,
26 vec![print_by_field(&input), print_method(&input)],
27 );
28 expanded.into()
29}
30
31#[cfg(feature = "math")]
32#[proc_macro_derive(Math)]
33pub fn math(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
34 let input = parse_macro_input!(input as DeriveInput);
35
36 let generate_math = math_app(&input);
37 generate_math.into()
38}
39
40#[cfg(feature = "cipher")]
41#[proc_macro_derive(Cipher, attributes(opt))]
42pub fn cipher(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
43 let input = parse_macro_input!(input as DeriveInput);
44
45 let generate_cipher = cipher_app(&input);
46 generate_cipher.into()
47}
48
49#[cfg(feature = "parser")]
50#[proc_macro_derive(Parser, attributes(opt))]
51pub fn parser(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
52 let input = parse_macro_input!(input as DeriveInput);
53
54 let generate_into = parser_app(&input);
55 generate_into.into()
56}
57
58#[cfg(feature = "search")]
59#[proc_macro_derive(Search, attributes(opt))]
60pub fn search(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
61 let input = parse_macro_input!(input as DeriveInput);
62
63 let generate_into = search_app(&input);
64 generate_into.into()
65}
66
67#[cfg(feature = "sql")]
68#[proc_macro_derive(Sql, attributes(opt))]
69pub fn sql(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
70 let input = parse_macro_input!(input as DeriveInput);
71
72 let generate_into = sql_app(&input);
73 generate_into.into()
74}