1use std::collections::HashMap;
2
3use self::{cleaners::clear_css, parsing_functions::parse_stylesheet};
4
5mod cleaners;
6mod parsing_functions;
7mod types;
8
9pub(crate) fn process_css(input: &str, prefix: &str) -> (String, HashMap<String, String>) {
11 let cleared_input = clear_css(input);
12 let (_, stylesheet) = parse_stylesheet(&cleared_input).unwrap();
13
14 let mapping: HashMap<String, String> = stylesheet.gen_mapping(prefix).into_iter().collect();
15 let updated_css = stylesheet.gen_css(prefix);
16
17 (updated_css, mapping)
18}
19
20#[cfg(test)]
21mod tests {
22 use std::collections::HashMap;
23
24 use crate::parser::process_css;
25
26 #[test]
27 fn process_css_returns_correct_values() {
28 let input = "
29 .class {
30 color: red;
31 background-color: yellow;
32 }
33
34 #id {
35 color: green;
36 background-color: white;
37 }
38 ";
39 let prefix = "test-";
40
41 let mut expected_mapping = HashMap::<String, String>::new();
42 expected_mapping.insert("class".to_owned(), "test-class".to_owned());
43 expected_mapping.insert("id".to_owned(), "test-id".to_owned());
44
45 let expected_css = ".test-class { color: red; background-color: yellow; } #test-id { color: green; background-color: white; }".to_owned();
46
47 assert_eq!((expected_css, expected_mapping), process_css(input, prefix));
48 }
49}