Skip to main content

icydb/base/sanitizer/intl/
iso.rs

1use crate::design::prelude::*;
2
3///
4/// Iso3166_1A2
5/// Trims and uppercases the code
6///
7
8#[sanitizer]
9pub struct Iso3166_1A2;
10
11impl Sanitizer<String> for Iso3166_1A2 {
12    fn sanitize(&self, value: &mut String) -> Result<(), String> {
13        // trim in place
14        let trimmed = value.trim();
15
16        if trimmed.len() != value.len() {
17            *value = trimmed.to_owned();
18        }
19
20        // uppercase in place (ASCII)
21        value.make_ascii_uppercase();
22
23        Ok(())
24    }
25}
26
27///
28/// Iso639_1
29/// Trims and lowercases the code
30///
31
32#[sanitizer]
33pub struct Iso639_1;
34
35impl Sanitizer<String> for Iso639_1 {
36    fn sanitize(&self, value: &mut String) -> Result<(), String> {
37        let trimmed = value.trim();
38
39        if trimmed.len() != value.len() {
40            *value = trimmed.to_owned();
41        }
42
43        value.make_ascii_lowercase();
44
45        Ok(())
46    }
47}