use crate::error::CepError;
use lazy_static::lazy_static;
use regex::Regex;
lazy_static! {
static ref CEP_REGEX: Regex = Regex::new(r"^(\d{5})-?(\d{3})$").unwrap();
}
pub fn normalizar_cep(cep: &str) -> Result<String, CepError> {
let cep_limpo = cep.replace(&['-', ' ', '.'][..], "");
if !CEP_REGEX.is_match(cep) && cep_limpo.len() != 8 {
return Err(CepError::CepInvalido);
}
if cep_limpo.chars().all(|c| c == '0') {
return Err(CepError::CepInvalido);
}
Ok(cep_limpo)
}
pub fn formatar_cep(cep: &str) -> Result<String, CepError> {
let cep_normalizado = normalizar_cep(cep)?;
Ok(format!("{}-{}", &cep_normalizado[..5], &cep_normalizado[5..]))
}