33 lines
774 B
Rust
Raw Normal View History

2022-07-23 00:40:30 +00:00
mod api_group;
mod api_method;
2022-07-12 11:51:56 +00:00
mod group;
2022-07-23 00:38:00 +00:00
mod group_method;
2022-07-12 10:28:03 +00:00
mod skeleton;
2022-07-12 11:41:03 +00:00
mod util;
2022-07-12 10:28:03 +00:00
2022-07-10 17:06:19 +02:00
use case::CaseExt;
2022-07-12 10:28:03 +00:00
use proc_macro2::TokenStream;
2022-07-12 11:51:56 +00:00
use quote::quote;
2022-07-10 17:06:19 +02:00
2022-07-12 11:51:56 +00:00
use crate::{md_parser, parser};
2022-07-12 10:28:03 +00:00
2022-07-12 11:51:56 +00:00
use self::{group::generate_groups, skeleton::generate_skeleton};
2022-07-12 10:28:03 +00:00
pub fn generate(ast: &syn::DeriveInput, api_content: &str) -> TokenStream {
let ident = &ast.ident;
2022-07-12 11:35:11 +00:00
let token_tree = md_parser::TokenTreeFactory::create(api_content);
let api_groups = parser::parse_api_groups(token_tree);
2022-07-12 10:28:03 +00:00
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
}
}
}