aldrin-codegen 0.13.0

Aldrin code generator library.
Documentation
use heck::{AsSnakeCase, AsUpperCamelCase};
use std::fmt;

fn to_case<'a, F, R>(s: &'a str, convert: F) -> String
where
    F: FnOnce(&'a str) -> R,
    R: fmt::Display,
{
    let start = s.len() - s.trim_start_matches('_').len();
    let end = s.trim_end_matches('_').len();

    format!("{}{}{}", &s[..start], convert(&s[start..end]), &s[end..],)
}

pub(crate) fn to_camel_case(s: &str) -> String {
    to_case(s, AsUpperCamelCase)
}

pub(crate) fn to_snake_case(s: &str) -> String {
    to_case(s, AsSnakeCase)
}