texcore_derive/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3
4#[proc_macro_derive(ExtraOps)]
5pub fn my_trait_derive(input: TokenStream) -> TokenStream {
6    let ast = syn::parse(input).unwrap();
7    impl_my_trait(&ast)
8}
9
10fn impl_my_trait(ast: &syn::DeriveInput) -> TokenStream {
11    let name = &ast.ident;
12    let generics = &ast.generics;
13    let (impl_generics, ty_generics, _) = generics.split_for_impl();
14    let gen = quote! {
15        impl #impl_generics ExtraOptions for #name #ty_generics {
16            fn modify_element(&mut self, options: Vec<Options>){
17                self.latex = self.to_latex_string();
18                for option in options {
19                    self.latex = option.modify(&self.latex);
20                }
21                self.modified = true;
22            }
23        }
24    };
25    gen.into()
26}