diff --git a/changelog_unreleased/scss/13487.md b/changelog_unreleased/scss/13487.md new file mode 100644 index 000000000..e8981a56c --- /dev/null +++ b/changelog_unreleased/scss/13487.md @@ -0,0 +1,16 @@ +#### Fix formatting string value that includes escape `\` (#13487 by @sosukesuzuki) + + +```scss +/* Input */ +$description: "Lorem ipsum dolor sit \"amet\", consectetur adipiscing elit, " + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +/* Prettier stable */ +$description: 'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, '+ "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +/* Prettier main */ +$description: 'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, ' + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +``` diff --git a/src/language-css/printer-postcss.js b/src/language-css/printer-postcss.js index 828519c88..070f7de59 100644 --- a/src/language-css/printer-postcss.js +++ b/src/language-css/printer-postcss.js @@ -620,6 +620,7 @@ function genericPrint(path, options, print) { // Ignore escape `\` if ( + iNode.type !== "value-string" && iNode.value && iNode.value.includes("\\") && iNextNode && diff --git a/tests/format/scss/quotes/__snapshots__/jsfmt.spec.js.snap b/tests/format/scss/quotes/__snapshots__/jsfmt.spec.js.snap index 863d8c607..a6d3570d4 100644 --- a/tests/format/scss/quotes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/scss/quotes/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,38 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`escape-in-string.scss - {"singleQuote":true} format 1`] = ` +====================================options===================================== +parsers: ["scss"] +printWidth: 80 +singleQuote: true + | printWidth +=====================================input====================================== +$description: "Lorem ipsum dolor sit \\"amet\\", consectetur adipiscing elit, " + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +=====================================output===================================== +$description: 'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, ' + + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'; + +================================================================================ +`; + +exports[`escape-in-string.scss format 1`] = ` +====================================options===================================== +parsers: ["scss"] +printWidth: 80 + | printWidth +=====================================input====================================== +$description: "Lorem ipsum dolor sit \\"amet\\", consectetur adipiscing elit, " + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +=====================================output===================================== +$description: 'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, ' + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + +================================================================================ +`; + exports[`forward-with.scss - {"singleQuote":true} format 1`] = ` ====================================options===================================== parsers: ["scss"] diff --git a/tests/format/scss/quotes/escape-in-string.scss b/tests/format/scss/quotes/escape-in-string.scss new file mode 100644 index 000000000..dbd966476 --- /dev/null +++ b/tests/format/scss/quotes/escape-in-string.scss @@ -0,0 +1,2 @@ +$description: "Lorem ipsum dolor sit \"amet\", consectetur adipiscing elit, " + + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";