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}