diff --git a/CHANGELOG.md b/CHANGELOG.md index e91908c..b19edd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 6.0.6 + +- Fixed: parse quoted attributes containing a newline correctly + # 6.0.5 - Perf: rework unesc for a 63+% performance boost diff --git a/package-lock.json b/package-lock.json index 40a35b2..004676a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "postcss-selector-parser", - "version": "6.0.5", + "version": "6.0.6", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index b9fd20c..fe1f1cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "postcss-selector-parser", - "version": "6.0.5", + "version": "6.0.6", "devDependencies": { "@babel/cli": "^7.11.6", "@babel/core": "^7.11.6", diff --git a/src/__tests__/attributes.js b/src/__tests__/attributes.js index 2e46968..9239b56 100644 --- a/src/__tests__/attributes.js +++ b/src/__tests__/attributes.js @@ -367,6 +367,13 @@ test('extraneous non-combinating whitespace', ' [href] , [class] ', (t, tr t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' '); }); +test('newline in attribute selector', '[class="woop \\\nwoop woop"]', (t, tree) => { + t.deepEqual(tree.nodes[0].nodes[0].attribute, 'class'); + t.deepEqual(tree.nodes[0].nodes[0].operator, '='); + t.deepEqual(tree.nodes[0].nodes[0].value, 'woop \nwoop woop'); + t.true(tree.nodes[0].nodes[0].quoted); +}); + test('comments within attribute selectors', '[href/* wow */=/* wow */test]', (t, tree) => { t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href'); t.deepEqual(tree.nodes[0].nodes[0].operator, '='); diff --git a/src/selectors/attribute.js b/src/selectors/attribute.js index eebe80f..723863a 100644 --- a/src/selectors/attribute.js +++ b/src/selectors/attribute.js @@ -5,7 +5,7 @@ import {ATTRIBUTE} from './types'; const deprecate = require("util-deprecate"); -const WRAPPED_IN_QUOTES = /^('|")(.*)\1$/; +const WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/; const warnOfDeprecatedValueAssignment = deprecate(() => {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " +