warlocks_cauldron/providers/spec/
it.rs

1use super::super::dependencies::*;
2
3
4/// Methods collection provides special data for Italy (it)
5pub struct ItalySpecProvider;
6
7impl ItalySpecProvider {
8    /// Return a random fiscal code
9    pub fn fiscal_code(gender: Option<Gender>) -> String {
10        let mut code = generate_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
11        code.push_str(&custom_code("##", '@', '#'));
12
13        let fiscal_code = crate::data::parsed::IT.builtin.get("fiscal_code").unwrap()
14            .as_object().unwrap();
15        
16        code.push_str(
17            get_random_element(fiscal_code
18                .get("month_codes").unwrap()
19                .as_array().unwrap()
20                .into_iter().map(|c| c.as_str().unwrap())
21            )
22        );
23
24        let mut birth_day = randint(101, 131);
25        if validate_variant(gender, None) == Gender::FEMALE {
26            birth_day += 40;
27        }
28
29        code.push_str(&birth_day.to_string()[1..]);
30
31        code.push_str(
32            get_random_element(fiscal_code
33                .get("city_letters").unwrap()
34                .as_array().unwrap()
35                .into_iter().map(|c| c.as_str().unwrap())
36            )
37        );
38
39        code.push_str(&custom_code("###@", '#', '@'));
40
41        code
42    }
43}