use crate::specs::root::RootModuleSpec;
use crate::conventions::dialect_enum_name;
use crate::utils::dialect_module_name;
use quote::{format_ident, quote};
pub fn root_module(spec: &RootModuleSpec) -> syn::File {
let default_dialects = match spec.default_dialect() {
Some(canonical_name) => {
let dialect_module_name = format_ident!("{}", dialect_module_name(canonical_name));
let dialect_enum_ident = format_ident!("{}", dialect_enum_name(canonical_name));
quote! {
pub use dialects::#dialect_module_name as default_dialect;
pub use dialects::#dialect_module_name::#dialect_enum_ident as DefaultDialect;
}
}
None => quote! {},
};
syn::parse2(quote! {
pub mod dialects;
#default_dialects
})
.unwrap()
}