gitignore_template_generator/validator/
impls.rs1use super::api::CliArgsValidator;
2use crate::constant;
3
4pub struct DefaultCliArgsValidator;
8
9impl CliArgsValidator for DefaultCliArgsValidator {
10 fn has_no_commas(value: &str) -> Result<String, String> {
17 if value.contains(',') {
18 Err(String::from(constant::error_messages::COMMAS_NOT_ALLOWED))
19 } else {
20 Ok(value.to_string())
21 }
22 }
23
24 fn has_no_whitespaces(value: &str) -> Result<String, String> {
31 if value.chars().any(|c| c.is_whitespace()) {
32 Err(String::from(
33 constant::error_messages::WHITESPACES_NOT_ALLOWED,
34 ))
35 } else {
36 Ok(value.to_string())
37 }
38 }
39
40 fn has_valid_template_name(value: &str) -> Result<String, String> {
41 match Self::has_no_commas(value) {
42 Ok(no_commas_value) => {
43 match Self::has_no_whitespaces(&no_commas_value) {
44 Ok(clean_value) => Ok(clean_value),
45 Err(whitespaces_error) => Err(whitespaces_error),
46 }
47 }
48 Err(commas_error) => match Self::has_no_whitespaces(value) {
49 Ok(_) => Err(commas_error),
50 Err(whitespaces_error) => {
51 Err(format!("{} + {}", commas_error, whitespaces_error))
52 }
53 },
54 }
55 }
56}