use convert_case::{Case, Casing};
use proc_macro2::TokenStream as TokenStream2;
use quote::{format_ident, quote};
use crate::parser::command_spec::Identifier;
mod doc_identifier;
impl Identifier {
pub fn to_rust(&self) -> TokenStream2 {
if self.name == "()" {
quote! {
()
}
} else {
let ident = format_ident!("{}", self.name);
quote! {
#ident
}
}
}
pub fn to_rust_pascalized(&self) -> TokenStream2 {
let pascal_ident = format_ident!("{}", self.name.to_case(Case::Pascal));
quote! {
#pascal_ident
}
}
pub fn to_rust_paired(&self) -> TokenStream2 {
let path = &self
.variant
.to_rust_path()
.expect("This should be generatable, when this function is called");
let ident = &self.to_rust();
if path.is_empty() {
quote! {
crate :: #ident
}
} else {
quote! {
#path :: #ident
}
}
}
}