33 lines
774 B
Rust
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
|
|
}
|
|
}
|
|
}
|