vacro-parser-macro 0.1.16

Internal macro implementation for vacro-parser.
Documentation
use proc_macro2::TokenStream;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::{format_ident, quote};

pub fn resolve_crate_root() -> TokenStream {
    let found_vacro = crate_name("vacro");

    if let Ok(FoundCrate::Name(name)) = found_vacro {
        let import_root = format_ident!("{name}");
        return quote!( ::#import_root::parser );
    }

    let found_sub = crate_name("vacro-parser");

    if let Ok(FoundCrate::Name(name)) = found_sub {
        let import_root = format_ident!("{name}");
        return quote!( ::#import_root );
    }

    if std::env::var("CARGO_PKG_NAME").unwrap_or_default() == "vacro-parser" {
        return quote!(::vacro_parser);
    }

    quote!(::vacro_parser)
}