use crate::conventions::dialect_enum_name;
use quote::{format_ident, quote};
use crate::specs::dialects::DialectsRootModuleSpec;
pub fn dialects_root_module(spec: &DialectsRootModuleSpec) -> syn::File {
let dialect_modules = spec.module_names().iter().map(|name| {
let name = format_ident!("{}", name);
quote! {
pub mod #name;
}
});
let dialect_enum_imports = spec.module_names().iter().map(|name| {
let module_name = format_ident!("{}", name);
let dialect_enum_ident = format_ident!("{}", dialect_enum_name(name));
quote! {
#[doc(inline)]
pub use #module_name::#dialect_enum_ident;
}
});
syn::parse2(quote! {
#![warn(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
#(#dialect_modules)*
#(#dialect_enum_imports)*
})
.unwrap()
}