nekopas2rust_macros/
lib.rs

1mod 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}