frender-macros 1.0.0-alpha.8

macros for frender
Documentation
use lazy_static::lazy_static;
use proc_macro2::Span;
use regex::{Captures, Regex};

pub fn snake_to_camel(value: &str) -> std::borrow::Cow<str> {
    lazy_static! {
        static ref RE: Regex = Regex::new("_([a-z])").unwrap();
    }

    let value = RE.replace_all(&value, |cap: &Captures| {
        let c = &cap[1];
        c.to_uppercase()
    });

    value
}

pub fn snake_to_camel_lit_str(value: &str, span: Span) -> syn::LitStr {
    let value = snake_to_camel(value);
    let lit = syn::LitStr::new(value.as_ref(), span);
    lit
}