use proc_macro::TokenStream;
use proc_macro2::Span;
mod formati_args;
use formati_args::wrap;
#[proc_macro]
pub fn format(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::format);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn print(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::print);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn println(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::println);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn eprint(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::eprint);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn eprintln(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::eprintln);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn dbg(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::dbg);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "stdio")]
pub fn panic(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => std::panic);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "anyhow")]
pub fn anyhow(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => anyhow::anyhow);
wrap(wrapped, input)
}
#[proc_macro]
#[cfg(feature = "anyhow")]
pub fn bail(input: TokenStream) -> TokenStream {
let wrapped = syn::parse_quote_spanned!(Span::call_site() => anyhow::bail);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
mod like_tracing;
#[proc_macro]
#[cfg(any(feature = "log", feature = "tracing"))]
pub fn trace(input: TokenStream) -> TokenStream {
#[cfg(feature = "log")]
{
let wrapped = syn::parse_quote_spanned!(Span::call_site() => log::trace);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
{
like_tracing::wrap("trace", input)
}
}
#[proc_macro]
#[cfg(any(feature = "log", feature = "tracing"))]
pub fn debug(input: TokenStream) -> TokenStream {
#[cfg(feature = "log")]
{
let wrapped = syn::parse_quote_spanned!(Span::call_site() => log::debug);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
{
like_tracing::wrap("debug", input)
}
}
#[proc_macro]
#[cfg(any(feature = "log", feature = "tracing"))]
pub fn info(input: TokenStream) -> TokenStream {
#[cfg(feature = "log")]
{
let wrapped = syn::parse_quote_spanned!(Span::call_site() => log::info);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
{
like_tracing::wrap("info", input)
}
}
#[proc_macro]
#[cfg(any(feature = "log", feature = "tracing"))]
pub fn warn(input: TokenStream) -> TokenStream {
#[cfg(feature = "log")]
{
let wrapped = syn::parse_quote_spanned!(Span::call_site() => log::warn);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
{
like_tracing::wrap("warn", input)
}
}
#[proc_macro]
#[cfg(any(feature = "log", feature = "tracing"))]
pub fn error(input: TokenStream) -> TokenStream {
#[cfg(feature = "log")]
{
let wrapped = syn::parse_quote_spanned!(Span::call_site() => log::error);
wrap(wrapped, input)
}
#[cfg(feature = "tracing")]
{
like_tracing::wrap("error", input)
}
}