use proc_macro2::Span;
use crate::pallet::Def;
pub fn expand_doc_only(def: &mut Def) -> proc_macro2::TokenStream {
let dispatchables = if let Some(call_def) = &def.call {
let type_impl_generics = def.type_impl_generics(Span::call_site());
call_def
.methods
.iter()
.map(|method| {
let name = &method.name;
let args = &method
.args
.iter()
.map(|(_, arg_name, arg_type)| quote::quote!( #arg_name: #arg_type, ))
.collect::<proc_macro2::TokenStream>();
let docs = &method.docs;
let real = format!(" [`Pallet::{}`].", name);
quote::quote!(
#( #[doc = #docs] )*
#[ doc = #real ]
pub fn #name<#type_impl_generics>(#args) { unreachable!(); }
)
})
.collect::<proc_macro2::TokenStream>()
} else {
quote::quote!()
};
let storage_types = def
.storages
.iter()
.map(|storage| {
let storage_name = &storage.ident;
let storage_type_docs = &storage.docs;
let real = format!("[`pallet::{}`].", storage_name);
quote::quote!(
#( #[doc = #storage_type_docs] )*
#[ doc = #real ]
pub struct #storage_name();
)
})
.collect::<proc_macro2::TokenStream>();
quote::quote!(
#[cfg(doc)]
pub mod storage_types {
use super::*;
#storage_types
}
#[cfg(doc)]
pub mod dispatchables {
use super::*;
#dispatchables
}
)
}