nekopas2rust_macros/
lib.rs

1mod components;
2use components::prelude::*;
3
4#[proc_macro_derive(Builder, attributes(opt))]
5pub fn builder(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
6    let input = parse_macro_input!(input as DeriveInput);
7    let generate = build_app(&input);
8    generate.into()
9}
10
11#[proc_macro_derive(Print, attributes(transporter))]
12pub fn print(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
13    let input = parse_macro_input!(input as DeriveInput);
14    let mut expanded = proc_macro2::TokenStream::new().into();
15    for_extend_token_stream(
16        &mut expanded,
17        vec![print_by_field(&input), print_method(&input)],
18    );
19    expanded.into()
20}
21
22#[proc_macro_derive(Math)]
23pub fn math(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
24    let input = parse_macro_input!(input as DeriveInput);
25
26    let generate_math = math_app(&input);
27    generate_math.into()
28}
29
30#[proc_macro_derive(Cipher, attributes(opt))]
31pub fn cipher(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
32    let input = parse_macro_input!(input as DeriveInput);
33
34    let generate_cipher = cipher_app(&input);
35    generate_cipher.into()
36}
37
38#[proc_macro_derive(Sphere, attributes(opt, transporter))]
39pub fn sphere(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
40    let b = builder(input.clone()).into();
41    let p = print(input.clone()).into();
42    let m = math(input.clone()).into();
43    let c = cipher(input).into();
44    let mut expanded = proc_macro2::TokenStream::new().into();
45    for_extend_token_stream(&mut expanded, vec![b, p, m, c]);
46    expanded.into()
47}