Joel Wachsler 4070215aac Format
2022-07-23 00:40:30 +00:00

33 lines
774 B
Rust

mod api_group;
mod api_method;
mod group;
mod group_method;
mod skeleton;
mod util;
use case::CaseExt;
use proc_macro2::TokenStream;
use quote::quote;
use crate::{md_parser, parser};
use self::{group::generate_groups, skeleton::generate_skeleton};
pub fn generate(ast: &syn::DeriveInput, api_content: &str) -> TokenStream {
let ident = &ast.ident;
let token_tree = md_parser::TokenTreeFactory::create(api_content);
let api_groups = parser::parse_api_groups(token_tree);
let skeleton = generate_skeleton(ident);
let groups = generate_groups(api_groups);
let impl_ident = syn::Ident::new(&format!("{}_impl", ident).to_snake(), ident.span());
quote! {
pub mod #impl_ident {
#skeleton
#groups
}
}
}