nessa/algorithms/
formats.rs1use colored::Colorize;
2
3fn check_camel_case(name: &str, instance: &str) -> Result<(), String> {
6 if name.chars().next().unwrap().is_lowercase() {
7 return Err(format!("{instance} name {} should begin with an uppercase letter", name.green()));
8 }
9
10 if name.contains("_") {
11 return Err(format!("{instance} name {} should not contain underscores", name.green()));
12 }
13
14 Ok(())
15}
16
17fn check_snake_case(name: &str, instance: &str) -> Result<(), String> {
18 if name.chars().next().unwrap().is_uppercase() {
19 return Err(format!("{instance} name {} should begin with a lowercase letter", name.green()));
20 }
21
22 let chars = name.chars().collect::<Vec<_>>();
23
24 if chars.windows(2).any(|a| a[0].is_lowercase() && a[1].is_uppercase()) {
25 return Err(format!("{instance} name {} should not use camel case", name.green()));
26 }
27
28 Ok(())
29}
30
31pub fn check_class_name(name: &str) -> Result<(), String> {
34 check_camel_case(name, "Class")
35}
36
37pub fn check_interface_name(name: &str) -> Result<(), String> {
38 check_camel_case(name, "Interface")
39}
40
41pub fn check_template_name(name: &str) -> Result<(), String> {
42 check_camel_case(name, "Template")
43}
44
45pub fn check_fn_name(name: &str) -> Result<(), String> {
46 check_snake_case(name, "Function")
47}