rspack_style 0.1.16

a rust toolkit bundled for front-end style files
Documentation
use rspack_style::extend::string::StringExtend;
use rspack_style::style_core::applicationn::Application;
use rspack_style::util::file::path_resolve;

#[test]
fn test_less_css_module_render() {
  let filepath = path_resolve("assets/css_modules/index.module.less");
  let app = Application::default();
  let res = app.render(filepath.as_str()).unwrap().0;
  let target_code = r#"
.x {
  display: inline-block;
  width: 20px;
}

h2,h3 {
  font-size: 10px;
  display: block;
}

h2 .a_css_modules_index_module_16312054692010661328,h3 .a_css_modules_index_module_16312054692010661328 {
  display: block;
  box-sizing: border-box;
}

h2 .m_css_modules_index_module_16312054692010661328 .tap #h2,h3 .m_css_modules_index_module_16312054692010661328 .tap #h2 {
  word-break: break-all;
  width: 40px;
}

.kol_css_modules_index_module_16312054692010661328 h2 .m_css_modules_index_module_16312054692010661328 .tap #h2,.kol_css_modules_index_module_16312054692010661328 h3 .m_css_modules_index_module_16312054692010661328 .tap #h2 {
  width: 100px;
}

.u_css_modules_index_module_16312054692010661328 h2,.u_css_modules_index_module_16312054692010661328 h3 {
  display: inline-block;
  width: 20px;
}

h2 .b,h3 .b {
  display: inline-block;
  width: 20px;
}

.c_css_modules_index_module_16312054692010661328 h2 ,.c_css_modules_index_module_16312054692010661328 h3  {
  display: inline-block;
  width: 20px;
}
  "#;
  println!("{}", res);
  assert_eq!(
    target_code.to_string().simple_compare(),
    res.simple_compare()
  );
}

#[test]
fn test_less_css_module_js_content_render() {
  let filepath = path_resolve("assets/css_modules/lib.module.less");
  let app = Application::default();
  let (_, js_content) = app.render_into_hashmap(filepath.as_str()).unwrap();
  let (css, js) = app.render(filepath.as_str()).unwrap();
  let target_js_code = r#"
      const style = {
            abc: "abc_css_modules_lib_module_18422443650085235901",
            max: "max_css_modules_lib_module_18422443650085235901",
            min: "min_css_modules_lib_module_18422443650085235901",
            uiz: "uiz_css_modules_lib_module_18422443650085235901",
    };
    export default style;
  "#;
  assert_eq!(
    js_content.simple_compare(),
    target_js_code.to_string().simple_compare()
  );
  assert_eq!(js_content, js);
  println!("{}", css);
  println!("{}", js_content);
  let target_code = r#"
.abc_css_modules_lib_module_18422443650085235901 {
  width: 30px;
}

.abc_css_modules_lib_module_18422443650085235901 .uiz_css_modules_lib_module_18422443650085235901 {
  pointer-events: auto;
}

h2 {
  display: inline-block;
}

.pdc {
  height: 20px;
}


.min_css_modules_lib_module_18422443650085235901 {
  white-space: break-spaces;
}


.max_css_modules_lib_module_18422443650085235901 {
  margin-bottom: 200px;
}


.abc_css_modules_lib_module_18422443650085235901 {
  width: 30px;
}

.abc_css_modules_lib_module_18422443650085235901 .uiz_css_modules_lib_module_18422443650085235901 {
  pointer-events: auto;
}

h2 {
  display: inline-block;
}

.pdc {
  height: 20px;
}
"#;
  assert_eq!(
    css.simple_compare(),
    target_code.to_string().simple_compare()
  );
}