fix: 🐛 file parsing error on variable pattern spacing corrected

This commit is contained in:
2025-02-23 11:44:19 +01:00
parent 01417a7ac7
commit 727d8d770b
3 changed files with 28 additions and 19 deletions

View File

@@ -6,3 +6,8 @@ edition = "2021"
[dependencies] [dependencies]
inquire = "0.7.5" inquire = "0.7.5"
regex = "1.11.1" regex = "1.11.1"
[[bin]]
edition = "2021"
name = "code_templates"
path = "src/main.rs"

View File

@@ -3,27 +3,31 @@ use regex::Regex;
pub fn apply_name_template(template: &str, filename: &str) -> String { pub fn apply_name_template(template: &str, filename: &str) -> String {
match template { match template {
"__name__" | "{{name}}" => filename.to_string(), "__name__" | "{{name}}" => filename.to_string(),
"__upperCase_name__" | "{{upperCase name}}" => filename.to_uppercase().to_string(), "__upperCase_name__" | "{{upperCasename}}" => filename.to_uppercase().to_string(),
"__lowerCase_name__" | "{{lowerCase name}}" => filename.to_lowercase().to_string(), "__lowerCase_name__" | "{{lowerCasename}}" => filename.to_lowercase().to_string(),
"__camelCase_name__" | "{{camelCase name}}" => parse_camel_case(filename), "__camelCase_name__" | "{{camelCasename}}" => parse_camel_case(filename),
"__pascalCase_name__" | "{{pascalCase name}}" => parse_pascal_case(filename), "__pascalCase_name__" | "{{pascalCasename}}" => parse_pascal_case(filename),
"__snakeCase_name__" | "{{snakeCase name}}" => parse_snake_case(filename), "__snakeCase_name__" | "{{snakeCasename}}" => parse_snake_case(filename),
"__upperSnakeCase_name__" | "{{upperSnakeCase name}}" => { "__upperSnakeCase_name__" | "{{upperSnakeCasename}}" => {
parse_snake_case(filename).to_uppercase() parse_snake_case(filename).to_uppercase()
} }
"__kebabCase_name__" | "{{kebabCase name}}" => parse_snake_case(filename).replace("_", "-"), "__kebabCase_name__" | "{{kebabCasename}}" => parse_snake_case(filename).replace("_", "-"),
"__lowerDotCase_name__" | "{{lowerDotCase name}}" => { "__lowerDotCase_name__" | "{{lowerDotCasename}}" => {
parse_snake_case(filename).replace("_", ".") parse_snake_case(filename).replace("_", ".")
} }
_ => filename.to_string(), _ => filename.to_string(),
} }
} }
// FIXME: admit space between `{}` and name|upperCase name...
pub fn apply_all_templates_to_string(mut input: String, replacement: &str) -> String { pub fn apply_all_templates_to_string(mut input: String, replacement: &str) -> String {
let get_template_names_regex = Regex::new(r"(\{\{(name|upperCase name|lowerCase name|camelCase name|pascalCase name|snakeCase name|upperSnakeCase name|kebabCase name|lowerDotCase name)\}\})").unwrap(); let get_template_names_regex = Regex::new(r"(\{\{[\s]*(name|upperCase name|lowerCase name|camelCase name|pascalCase name|snakeCase name|upperSnakeCase name|kebabCase name|lowerDotCase name)[\s]*\}\})").unwrap();
input = get_template_names_regex input = get_template_names_regex
.replace_all(&input, |captured: &regex::Captures| { .replace_all(&input, |captured: &regex::Captures| {
format!("{}", apply_name_template(&captured[1], replacement),) format!(
"{}",
apply_name_template(&captured[1].replace(" ", ""), replacement),
)
}) })
.into_owned(); .into_owned();

View File

@@ -15,15 +15,15 @@ pub mod tests {
]; ];
pub const _TEMPLATE_EXPRESSIONS: [&str; 9] = [ pub const _TEMPLATE_EXPRESSIONS: [&str; 9] = [
"{{name}}", "{{ name }}",
"{{upperCase name}}", "{{ upperCase name }}",
"{{lowerCase name}}", "{{ lowerCase name }}",
"{{camelCase name}}", "{{ camelCase name }}",
"{{pascalCase name}}", "{{ pascalCase name }}",
"{{snakeCase name}}", "{{ snakeCase name }}",
"{{upperSnakeCase name}}", "{{ upperSnakeCase name }}",
"{{kebabCase name}}", "{{ kebabCase name }}",
"{{lowerDotCase name}}", "{{ lowerDotCase name }}",
]; ];
#[test] #[test]