From 5bdb16c8ea5c9891a06a60bba6af4e8dfe0b8623 Mon Sep 17 00:00:00 2001 From: Ido Rosenthal Date: Thu, 8 Dec 2022 12:41:08 +0200 Subject: [PATCH] fix: lost of first non space of a descendant combinator --- packages/css-selector-parser/src/helpers.ts | 2 +- .../test/selector-parser.spec.ts | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/packages/css-selector-parser/src/helpers.ts b/packages/css-selector-parser/src/helpers.ts index 37b34ee..2b9b542 100644 --- a/packages/css-selector-parser/src/helpers.ts +++ b/packages/css-selector-parser/src/helpers.ts @@ -43,7 +43,7 @@ export function createCombinatorAst({ return { type: `combinator`, combinator: type, - value: type === `space` ? ` ` : value, + value: type === `space` ? value[0] : value, start, end, before: ``, diff --git a/packages/css-selector-parser/test/selector-parser.spec.ts b/packages/css-selector-parser/test/selector-parser.spec.ts index a488882..cce992e 100644 --- a/packages/css-selector-parser/test/selector-parser.spec.ts +++ b/packages/css-selector-parser/test/selector-parser.spec.ts @@ -3477,6 +3477,76 @@ describe(`selector-parser`, () => { }); }); }); + describe('multiline', () => { + it(`.a\n \n.b`, () => { + test(`.a\n \n.b`, { + expectedAst: [ + createNode({ + type: `selector`, + start: 0, + end: 7, + nodes: [ + createNode({ + type: `class`, + value: `a`, + start: 0, + end: 2, + }), + createNode({ + type: `combinator`, + combinator: `space`, + value: `\n`, + start: 2, + end: 5, + before: '', + after: ' \n', + }), + createNode({ + type: `class`, + value: `b`, + start: 5, + end: 7, + }), + ], + }), + ], + }); + }); + it(`.a\n+\n.b`, () => { + test(`.a\n+\n.b`, { + expectedAst: [ + createNode({ + type: `selector`, + start: 0, + end: 7, + nodes: [ + createNode({ + type: `class`, + value: `a`, + start: 0, + end: 2, + }), + createNode({ + type: `combinator`, + combinator: `+`, + value: `+`, + start: 2, + end: 5, + before: '\n', + after: '\n', + }), + createNode({ + type: `class`, + value: `b`, + start: 5, + end: 7, + }), + ], + }), + ], + }); + }); + }); describe(`config`, () => { describe(`offset`, () => { it(`should start from a given offset`, () => {