csv_sanity/transformers/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use transformer::{
    Transformer,
    TransformResult,
};

mod trim;
pub use self::trim::TrimTransformer;

mod none;
pub use self::none::NoneTransformer;

mod regex;
pub use self::regex::{
    RegexTransformer,
    RegexMatchTransformer
};

mod capitalize;
pub use self::capitalize::{
    CapitalizeTransformer,
    capitalize
};

mod email;
pub use self::email::EmailTransformer;

mod number;
pub use self::number::NumberTransformer;

mod date;
pub use self::date::DateTransformer;

mod choice;
pub use self::choice::ChoiceTransformer;

mod zipcode;
pub use self::zipcode::ZipcodeTransformer;

mod phone_number;
pub use self::phone_number::PhoneNumberTransformer;

#[derive(Serialize, Deserialize, PartialEq, Eq, Hash, Clone, Debug)]
pub enum Transformers
{
    Trim(TrimTransformer),
    None(NoneTransformer),
    Regex(RegexTransformer),
    RegexMatch(RegexMatchTransformer),
    Capitalize(CapitalizeTransformer),
    Email(EmailTransformer),
    Number(NumberTransformer),
    Date(DateTransformer),
    Choice(ChoiceTransformer),
    Zipcode(ZipcodeTransformer),
    PhoneNumber(PhoneNumberTransformer),
}

impl Transformer for Transformers {
    fn transform(&self, field_value: &str, field_name: &str, record_n: usize) -> TransformResult {
        use self::Transformers::*;

        match *self {
            Trim(ref t) => t.transform(field_value, field_name, record_n),
            None(ref t) => t.transform(field_value, field_name, record_n),
            Regex(ref t) => t.transform(field_value, field_name, record_n),
            RegexMatch(ref t) => t.transform(field_value, field_name, record_n),
            Capitalize(ref t) => t.transform(field_value, field_name, record_n),
            Email(ref t) => t.transform(field_value, field_name, record_n),
            Number(ref t) => t.transform(field_value, field_name, record_n),
            Date(ref t) => t.transform(field_value, field_name, record_n),
            Choice(ref t) => t.transform(field_value, field_name, record_n),
            Zipcode(ref t) => t.transform(field_value, field_name, record_n),
            PhoneNumber(ref t) => t.transform(field_value, field_name, record_n)
        }
    }
}