use proc_macro2::TokenStream as Tokens;
use quote::quote;
use crate::case::Case;
pub(crate) struct Codegen {
pub(crate) krate: Tokens,
pub(crate) case: Option<Case>,
}
impl Codegen {
pub(crate) fn new(path: &syn::Path, case: Option<Case>) -> Codegen {
Codegen {
krate: quote!(#path),
case,
}
}
pub(crate) fn fields_as_written(&self) -> Codegen {
Codegen {
krate: self.krate.clone(),
case: None,
}
}
}
pub(crate) fn default_path() -> syn::Path {
use proc_macro_crate::{FoundCrate, crate_name};
match crate_name("substrate-data") {
Ok(FoundCrate::Name(name)) => {
let name = quote::format_ident!("{name}");
syn::parse_quote!(::#name)
}
_ => syn::parse_quote!(::substrate_data),
}
}