From 82b80b3c79a1781fa0e70ee453e8c4452b1b55d7 Mon Sep 17 00:00:00 2001 From: Lucas Azzola Date: Thu, 6 Jul 2017 21:55:34 +1000 Subject: [PATCH] Trim whitespace in descendant combinator, fixes #2410 (#2411) * Trim whitespace in descendant combinator, fixes #2410 * Permit whitespace changes in clean-ast.js --- src/clean-ast.js | 4 ++++ src/printer-postcss.js | 2 +- .../__snapshots__/jsfmt.spec.js.snap | 24 +++++++++++++++++++ tests/css_combinator/combinator.css | 9 +++++++ .../__snapshots__/jsfmt.spec.js.snap | 14 ++++++++++- tests/css_comments/selector.css | 5 ++++ .../__snapshots__/jsfmt.spec.js.snap | 6 +++-- 7 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/clean-ast.js b/src/clean-ast.js index 10d9a4c4..577bdde4 100644 --- a/src/clean-ast.js +++ b/src/clean-ast.js @@ -70,6 +70,10 @@ function massageAST(ast) { delete newObj.params; } + if (ast.type === "selector-combinator") { + newObj.value = newObj.value.replace(/\s+/g, " "); + } + if (ast.type === "media-feature") { newObj.value = newObj.value.replace(/ /g, ""); } diff --git a/src/printer-postcss.js b/src/printer-postcss.js index e3ac4f51..2c0c5ba7 100644 --- a/src/printer-postcss.js +++ b/src/printer-postcss.js @@ -212,7 +212,7 @@ function genericPrint(path, options, print) { : line; return concat([leading, n.value, " "]); } - return n.value; + return n.value.trim() || line; } case "selector-universal": { return n.value; diff --git a/tests/css_combinator/__snapshots__/jsfmt.spec.js.snap b/tests/css_combinator/__snapshots__/jsfmt.spec.js.snap index f2aa900a..8d7826ac 100644 --- a/tests/css_combinator/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_combinator/__snapshots__/jsfmt.spec.js.snap @@ -3,10 +3,34 @@ exports[`combinator.css 1`] = ` -Option/root .public/section ~ .public/section:before { } + +.x .y {} +.x > .y {} +.x ~ .y {} +.x + .y {} +.x.y {} +.x .y {} +.x + .y {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Option/root .public/section ~ .public/section:before { } +.x .y { +} +.x > .y { +} +.x ~ .y { +} +.x + .y { +} +.x.y { +} +.x .y { +} +.x .y { +} + `; exports[`leading.css 1`] = ` diff --git a/tests/css_combinator/combinator.css b/tests/css_combinator/combinator.css index db19558f..3f1b9408 100644 --- a/tests/css_combinator/combinator.css +++ b/tests/css_combinator/combinator.css @@ -1,2 +1,11 @@ -Option/root .public/section ~ .public/section:before { } + +.x .y {} +.x > .y {} +.x ~ .y {} +.x + .y {} +.x.y {} +.x .y {} +.x + .y {} diff --git a/tests/css_comments/__snapshots__/jsfmt.spec.js.snap b/tests/css_comments/__snapshots__/jsfmt.spec.js.snap index 5ce317f0..b1b50c0c 100644 --- a/tests/css_comments/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_comments/__snapshots__/jsfmt.spec.js.snap @@ -96,14 +96,26 @@ exports[`selector.css 1`] = ` .powerPathNavigator table.powerPathInfo th:active, .powerPathNavigator table.powerPathInfo th:active + th:last-child { } + +/* pressed buttons */ +.powerPathNavigator .helm button.pressedButton, +.powerPathNavigator .helm button:active:not(.disabledButton) { +} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .powerPathNavigator .helm button.pressedButton, /* pressed buttons */ -.powerPathNavigator .helm button:active:not(.disabledButton), + .powerPathNavigator + .helm + button:active:not(.disabledButton), .powerPathNavigator table.powerPathInfo th:active, .powerPathNavigator table.powerPathInfo th:active + th:last-child { } +/* pressed buttons */ +.powerPathNavigator .helm button.pressedButton, +.powerPathNavigator .helm button:active:not(.disabledButton) { +} + `; exports[`trailing_star_slash.css 1`] = ` diff --git a/tests/css_comments/selector.css b/tests/css_comments/selector.css index f0df33df..53bdc145 100644 --- a/tests/css_comments/selector.css +++ b/tests/css_comments/selector.css @@ -3,3 +3,8 @@ .powerPathNavigator table.powerPathInfo th:active, .powerPathNavigator table.powerPathInfo th:active + th:last-child { } + +/* pressed buttons */ +.powerPathNavigator .helm button.pressedButton, +.powerPathNavigator .helm button:active:not(.disabledButton) { +} diff --git a/tests/css_selector_list/__snapshots__/jsfmt.spec.js.snap b/tests/css_selector_list/__snapshots__/jsfmt.spec.js.snap index 4797cb75..f71441bd 100644 --- a/tests/css_selector_list/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_selector_list/__snapshots__/jsfmt.spec.js.snap @@ -28,8 +28,10 @@ exports[`selectors.css 1`] = ` } } -.asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas .asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas, -.asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas .asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas { +.asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas + .asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas, +.asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas + .asdasldaskdhjkashdahsdkjahskdjhakjsdkjahsdhkas { } `;