use super::api::CliArgsValidator;
use crate::constant;
pub struct DefaultCliArgsValidator;
impl CliArgsValidator for DefaultCliArgsValidator {
fn has_no_commas(value: &str) -> Result<String, String> {
if value.contains(',') {
Err(String::from(constant::error_messages::COMMAS_NOT_ALLOWED))
} else {
Ok(value.to_string())
}
}
fn has_no_whitespaces(value: &str) -> Result<String, String> {
if value.chars().any(|c| c.is_whitespace()) {
Err(String::from(
constant::error_messages::WHITESPACES_NOT_ALLOWED,
))
} else {
Ok(value.to_string())
}
}
fn has_valid_template_name(value: &str) -> Result<String, String> {
match Self::has_no_commas(value) {
Ok(no_commas_value) => {
match Self::has_no_whitespaces(&no_commas_value) {
Ok(clean_value) => Ok(clean_value),
Err(whitespaces_error) => Err(whitespaces_error),
}
}
Err(commas_error) => match Self::has_no_whitespaces(value) {
Ok(_) => Err(commas_error),
Err(whitespaces_error) => {
Err(format!("{} + {}", commas_error, whitespaces_error))
}
},
}
}
}