beaumont-macros 0.1.2

Algorithmic trading for quantitative financial applications
Documentation
use proc_macro2::{TokenStream, TokenTree};
use super::decimals::maybe_decimal_number;

pub fn transform(items: TokenStream) -> TokenStream {
    let mut buf = "Vector::from(vec![".to_string();
    for token in items {
        match &token {
            TokenTree::Literal(literal) => {
                match maybe_decimal_number(literal) {
                    Some(digits) => {
                        buf.push('"');
                        buf.push_str(&digits);
                        buf.push('"');
                        buf.push_str(".parse::<Decimal>().unwrap()");
                    }
                    None =>
                        buf.push_str(literal.to_string().as_str())
                }
            }

            _ => {
                buf.push_str(&token.to_string())
            }
        }
    }
    buf.push_str("].into_boxed_slice())");
    buf.parse::<TokenStream>().unwrap()
}