use heck::{ToLowerCamelCase, ToSnakeCase};
use yimi_rutool::core::StrUtil;
use crate::rulog::rulog;
pub trait IsEmptyString {
fn is_empty(&self) -> bool;
}
impl IsEmptyString for Option<String> {
fn is_empty(&self) -> bool {
return match self {
Some(s) => s.is_empty(),
_ => true,
};
}
}
impl IsEmptyString for Option<&str> {
fn is_empty(&self) -> bool {
return match self {
Some(s) => s.is_empty(),
_ => true,
};
}
}
pub fn capitalize(s: &str) -> String {
let mut c = s.chars();
match c.next(){
Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
None => String::new(),
}
}
pub fn exist_enc(var: &str) -> bool {
var.contains("enc(")
}
pub fn exist_env(var: &str) -> bool {
var.contains("$")
}
pub fn parse_env_var(var: String) -> String {
if !exist_env(var.as_str()) {
return var;
}
let words = StrUtil::split(var.as_str(), ":");
if words.len() > 1 {
for part in words {
let mut v = part;
v.push_str(":");
let w = var.replace(v.as_str(), "").replace("}", "");
return w;
}
}
rulog::info2("var:",var.to_string().as_str());
return var;
}
pub fn parse_var_enc(var: String) -> String {
if !exist_enc(var.as_str()) {
return var;
}
let words = StrUtil::split(var.as_str(), ":");
if words.len() > 1 {
for part in words {
let mut v = part;
v.push_str(":");
let w = var.replace(v.as_str(), "").replace("}", "");
return w;
}
}
rulog::info(var.to_string().as_str());
return var;
}
pub fn to_snake_case(p: &str) -> String {
p.to_snake_case().to_string()
}
pub fn to_camel_case(p: &str) -> String {
p.to_lower_camel_case().to_string()
}