cli-toolbox 0.8.0

Utility library for working with cli output ergonomically
use syn::parse::{Parse, ParseStream};

use crate::common::Message;
use crate::common::parse::parse_expression;
use crate::common::tracing::{trace_parsed, trace_source};
use crate::debug_macro::{DebugLnMacro, DebugMacro};

impl Parse for DebugLnMacro {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        return trace_parsed(parse(trace_source(input)));

        #[inline]
        fn parse(input: ParseStream) -> syn::Result<DebugLnMacro> {
            Ok(DebugLnMacro { message: Message::parse(input, true)? })
        }
    }
}

impl Parse for DebugMacro {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        return trace_parsed(parse(trace_source(input)));

        #[inline]
        fn parse(input: ParseStream) -> syn::Result<DebugMacro> {
            Ok(if let Ok(message) = Message::parse(input, false) {
                DebugMacro::Message(message)
            } else {
                DebugMacro::Expr(parse_expression(input, "debug")?)
            })
        }
    }
}