From db908ca0a7e70d3268112ad4207f326605f88c8a Mon Sep 17 00:00:00 2001 From: "Lyu, Wei Da" Date: Tue, 12 Apr 2022 12:51:42 +0800 Subject: [PATCH 1/3] (fix) accounting for whitspace while extracting tag --- .../language-server/src/lib/documents/utils.ts | 14 +++++++------- .../test/lib/documents/utils.test.ts | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/language-server/src/lib/documents/utils.ts b/packages/language-server/src/lib/documents/utils.ts index 51afa06b4..fee9ea070 100644 --- a/packages/language-server/src/lib/documents/utils.ts +++ b/packages/language-server/src/lib/documents/utils.ts @@ -39,13 +39,13 @@ function parseAttributes( } } -const regexIf = new RegExp('{#if\\s.*?}', 'gms'); -const regexIfEnd = new RegExp('{/if}', 'gms'); -const regexEach = new RegExp('{#each\\s.*?}', 'gms'); -const regexEachEnd = new RegExp('{/each}', 'gms'); -const regexAwait = new RegExp('{#await\\s.*?}', 'gms'); -const regexAwaitEnd = new RegExp('{/await}', 'gms'); -const regexHtml = new RegExp('{@html\\s.*?', 'gms'); +const regexIf = new RegExp('{\\s*#if\\s.*?}', 'gms'); +const regexIfEnd = new RegExp('{\\s*/if}', 'gms'); +const regexEach = new RegExp('{\\s*#each\\s.*?}', 'gms'); +const regexEachEnd = new RegExp('{\\s*/each}', 'gms'); +const regexAwait = new RegExp('{\\s*#await\\s.*?}', 'gms'); +const regexAwaitEnd = new RegExp('{\\s*/await}', 'gms'); +const regexHtml = new RegExp('{\\s*@html\\s.*?', 'gms'); /** * Extracts a tag (style or script) from the given text diff --git a/packages/language-server/test/lib/documents/utils.test.ts b/packages/language-server/test/lib/documents/utils.test.ts index a76fd97eb..5a97f773b 100644 --- a/packages/language-server/test/lib/documents/utils.test.ts +++ b/packages/language-server/test/lib/documents/utils.test.ts @@ -195,7 +195,8 @@ describe('document/utils', () => { p{ color: blue; } --> blah - + + { #if myvar } {/if} `; assert.deepStrictEqual(extractScriptTags(text)?.script, { From 08615596b063488f1e9c8e19cab7deacc0cfba0c Mon Sep 17 00:00:00 2001 From: "Lyu, Wei Da" Date: Tue, 24 May 2022 09:08:23 +0800 Subject: [PATCH 2/3] fix mismatch parameter name --- packages/language-server/src/lib/documents/utils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/language-server/src/lib/documents/utils.ts b/packages/language-server/src/lib/documents/utils.ts index fee9ea070..6388956f1 100644 --- a/packages/language-server/src/lib/documents/utils.ts +++ b/packages/language-server/src/lib/documents/utils.ts @@ -50,8 +50,7 @@ const regexHtml = new RegExp('{\\s*@html\\s.*?', 'gms'); /** * Extracts a tag (style or script) from the given text * and returns its start, end and the attributes on that tag. - * - * @param source text content to extract tag from + * @param text text content to extract tag from * @param tag the tag to extract */ function extractTags( From 54500aa88197a8994ffea2dbc31a0016894d623d Mon Sep 17 00:00:00 2001 From: "Lyu, Wei Da" Date: Tue, 24 May 2022 09:16:09 +0800 Subject: [PATCH 3/3] seperate test --- .../test/lib/documents/utils.test.ts | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/language-server/test/lib/documents/utils.test.ts b/packages/language-server/test/lib/documents/utils.test.ts index 5a97f773b..6a6382449 100644 --- a/packages/language-server/test/lib/documents/utils.test.ts +++ b/packages/language-server/test/lib/documents/utils.test.ts @@ -195,8 +195,7 @@ describe('document/utils', () => { p{ color: blue; } --> blah - - { #if myvar } {/if} + `; assert.deepStrictEqual(extractScriptTags(text)?.script, { @@ -210,6 +209,23 @@ describe('document/utils', () => { }); }); + it("extracts top level script when there're whitespace before block name", () => { + const text = ` + + { #if myvar } {/if} + `; + + assert.deepStrictEqual(extractScriptTags(text)?.script, { + content: 'top level script', + attributes: {}, + start: 25, + end: 41, + startPos: Position.create(1, 24), + endPos: Position.create(1, 40), + container: { start: 17, end: 50 } + }); + }); + it('ignores script tag in svelte:head', () => { // https://github.com/sveltejs/language-tools/issues/143#issuecomment-636422045 const text = `