inflector/numbers/deordinalize/
mod.rs

1/// Deorginalizes a `&str`
2///
3/// ```
4///     use inflector::numbers::deordinalize::deordinalize;
5///     let mock_string: &str = "0.1";
6///     let expected_string: String = "0.1".to_owned();
7///     let asserted_string: String = deordinalize(mock_string);
8///     assert!(asserted_string == expected_string);
9///
10/// ```
11/// ```
12///     use inflector::numbers::deordinalize::deordinalize;
13///     let mock_string: &str = "-1st";
14///     let expected_string: String = "-1".to_owned();
15///     let asserted_string: String = deordinalize(mock_string);
16///     assert!(asserted_string == expected_string);
17///
18/// ```
19/// ```
20///     use inflector::numbers::deordinalize::deordinalize;
21///     let mock_string: &str = "0th";
22///     let expected_string: String = "0".to_owned();
23///     let asserted_string: String = deordinalize(mock_string);
24///     assert!(asserted_string == expected_string);
25///
26/// ```
27/// ```
28///     use inflector::numbers::deordinalize::deordinalize;
29///     let mock_string: &str = "1st";
30///     let expected_string: String = "1".to_owned();
31///     let asserted_string: String = deordinalize(mock_string);
32///     assert!(asserted_string == expected_string);
33///
34/// ```
35/// ```
36///     use inflector::numbers::deordinalize::deordinalize;
37///     let mock_string: &str = "2nd";
38///     let expected_string: String = "2".to_owned();
39///     let asserted_string: String = deordinalize(mock_string);
40///     assert!(asserted_string == expected_string);
41///
42/// ```
43/// ```
44///     use inflector::numbers::deordinalize::deordinalize;
45///     let mock_string: &str = "3rd";
46///     let expected_string: String = "3".to_owned();
47///     let asserted_string: String = deordinalize(mock_string);
48///     assert!(asserted_string == expected_string);
49///
50/// ```
51/// ```
52///     use inflector::numbers::deordinalize::deordinalize;
53///     let mock_string: &str = "9th";
54///     let expected_string: String = "9".to_owned();
55///     let asserted_string: String = deordinalize(mock_string);
56///     assert!(asserted_string == expected_string);
57///
58/// ```
59/// ```
60///     use inflector::numbers::deordinalize::deordinalize;
61///     let mock_string: &str = "12th";
62///     let expected_string: String = "12".to_owned();
63///     let asserted_string: String = deordinalize(mock_string);
64///     assert!(asserted_string == expected_string);
65///
66/// ```
67/// ```
68///     use inflector::numbers::deordinalize::deordinalize;
69///     let mock_string: &str = "12000th";
70///     let expected_string: String = "12000".to_owned();
71///     let asserted_string: String = deordinalize(mock_string);
72///     assert!(asserted_string == expected_string);
73///
74/// ```
75/// ```
76///     use inflector::numbers::deordinalize::deordinalize;
77///     let mock_string: &str = "12001th";
78///     let expected_string: String = "12001".to_owned();
79///     let asserted_string: String = deordinalize(mock_string);
80///     assert!(asserted_string == expected_string);
81///
82/// ```
83/// ```
84///     use inflector::numbers::deordinalize::deordinalize;
85///     let mock_string: &str = "12002nd";
86///     let expected_string: String = "12002".to_owned();
87///     let asserted_string: String = deordinalize(mock_string);
88///     assert!(asserted_string == expected_string);
89///
90/// ```
91/// ```
92///     use inflector::numbers::deordinalize::deordinalize;
93///     let mock_string: &str = "12003rd";
94///     let expected_string: String = "12003".to_owned();
95///     let asserted_string: String = deordinalize(mock_string);
96///     assert!(asserted_string == expected_string);
97///
98/// ```
99/// ```
100///     use inflector::numbers::deordinalize::deordinalize;
101///     let mock_string: &str = "12004th";
102///     let expected_string: String = "12004".to_owned();
103///     let asserted_string: String = deordinalize(mock_string);
104///     assert!(asserted_string == expected_string);
105///
106/// ```
107pub fn deordinalize(non_ordinalized_string: &str) -> String {
108    if non_ordinalized_string.contains('.') {
109        non_ordinalized_string.to_owned()
110    } else {
111        non_ordinalized_string.trim_end_matches("st")
112            .trim_end_matches("nd")
113            .trim_end_matches("rd")
114            .trim_end_matches("th")
115            .to_owned()
116    }
117}