inflector/string/deconstantize/mod.rs
1#[cfg(feature = "heavyweight")]
2use cases::classcase::to_class_case;
3
4#[cfg(feature = "heavyweight")]
5/// Deconstantizes a `&str`
6///
7/// ```
8/// use inflector::string::deconstantize::deconstantize;
9/// let mock_string: &str = "Bar";
10/// let expected_string: String = "".to_owned();
11/// let asserted_string: String = deconstantize(mock_string);
12/// assert!(asserted_string == expected_string);
13///
14/// ```
15/// ```
16/// use inflector::string::deconstantize::deconstantize;
17/// let mock_string: &str = "::Bar";
18/// let expected_string: String = "".to_owned();
19/// let asserted_string: String = deconstantize(mock_string);
20/// assert!(asserted_string == expected_string);
21///
22/// ```
23/// ```
24/// use inflector::string::deconstantize::deconstantize;
25/// let mock_string: &str = "Foo::Bar";
26/// let expected_string: String = "Foo".to_owned();
27/// let asserted_string: String = deconstantize(mock_string);
28/// assert!(asserted_string == expected_string);
29///
30/// ```
31/// ```
32/// use inflector::string::deconstantize::deconstantize;
33/// let mock_string: &str = "Test::Foo::Bar";
34/// let expected_string: String = "Foo".to_owned();
35/// let asserted_string: String = deconstantize(mock_string);
36/// assert!(asserted_string == expected_string);
37///
38/// ```
39pub fn deconstantize(non_deconstantized_string: &str) -> String {
40 if non_deconstantized_string.contains("::") {
41 let split_string: Vec<&str> = non_deconstantized_string.split("::").collect();
42 if split_string.len() > 1 {
43 to_class_case(split_string[split_string.len() - 2])
44 } else {
45 "".to_owned()
46 }
47 } else {
48 "".to_owned()
49 }
50}