Fix spaces not being added between unquoted attributes when requested

This commit is contained in:
Wilson Lin 2021-10-23 13:39:06 +11:00
parent c8973d4eac
commit ece1f84fc4
4 changed files with 12 additions and 4 deletions

View File

@ -3,3 +3,4 @@
## 0.6.9
- Intrepret `type=module` on `<script>` tags as a JavaScript MIME eligible for its contents to be minified as JavaScript (previously it would not be and so its contents would be considered data and never minified as JavaScript).
- Fix issue where spaces are not added between unquoted attributes even when `cfg.keep_spaces_between_attributes` is `true`.

View File

@ -306,7 +306,7 @@ pub fn minify_attr(
if should_trim {
right_trim(&mut value_raw);
left_trim(&mut value_raw);
}
};
if should_collapse {
collapse_whitespace(&mut value_raw);
};
@ -325,7 +325,7 @@ pub fn minify_attr(
&value_raw_wrapped,
&MINIFY_CSS_TRANSFORM_OPTIONS.clone(),
);
// If input was invalid, wrapper syntax may not exist anymore.
// TODO If input was invalid, wrapper syntax may not exist anymore.
if value_raw_wrapped_min.starts_with(b"x{") {
value_raw_wrapped_min.drain(0..2);
};

View File

@ -75,8 +75,9 @@ pub fn minify_element(
}
for (i, (name, value)) in unquoted.iter().enumerate() {
// Write a space between unquoted attributes,
// and after the tag name if it wasn't written already during `quoted` processing.
if i > 0 || (i == 0 && quoted.len() == 0) {
// or after the tag name if it wasn't written already during `quoted` processing,
// or if forced by Cfg.
if i > 0 || (i == 0 && quoted.len() == 0) || cfg.keep_spaces_between_attributes {
out.push(b' ');
};
out.extend_from_slice(&name);

View File

@ -128,6 +128,12 @@ fn test_viewport_attr_minification() {
b"<meta name=viewport content='width=device-width, initial-scale=1'>",
b"<meta content=width=device-width,initial-scale=1 name=viewport>",
);
let spec_compliant_cfg = Cfg::spec_compliant();
eval_with_cfg(
b"<meta name=viewport content='width=device-width, initial-scale=1'>",
br#"<meta content="width=device-width,initial-scale=1" name=viewport>"#,
&spec_compliant_cfg
);
}
#[cfg(feature = "js-esbuild")]