From 2999ce69968009d8b625a0832cb7f6171720f657 Mon Sep 17 00:00:00 2001 From: pushkine Date: Thu, 7 Jan 2021 19:46:50 +0100 Subject: [PATCH 1/6] init --- .../svelte2tsx/src/htmlxtojsx/nodes/debug.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts index caa73682a..bda1b36d6 100644 --- a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts +++ b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts @@ -1,10 +1,20 @@ -import MagicString from 'magic-string'; import { Node } from 'estree-walker'; +import MagicString from 'magic-string'; /** - * {@debug ...} ---> {...} + * {@debug a} ---> {a} + * + * tsx won't accept commas, must split + * {@debug a, b} ---> {a}{b} */ export function handleDebug(htmlx: string, str: MagicString, debugBlock: Node): void { - const tokenStart = htmlx.indexOf('@debug', debugBlock.start); - str.remove(tokenStart, tokenStart + '@debug'.length); + const content = htmlx.slice(debugBlock.start + '@debug'.length + 1, debugBlock.end); + str.overwrite( + debugBlock.start, + debugBlock.end, + content + .split(',') + .map((v) => `{${v.trim()}}`) + .join('') + ); } From 7e9a297b409cf3a3e812aa3942b13973bdf9e1b2 Mon Sep 17 00:00:00 2001 From: pushkine Date: Thu, 7 Jan 2021 20:07:26 +0100 Subject: [PATCH 2/6] test+index fix --- packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts | 2 +- .../svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts index bda1b36d6..01588eb14 100644 --- a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts +++ b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts @@ -8,7 +8,7 @@ import MagicString from 'magic-string'; * {@debug a, b} ---> {a}{b} */ export function handleDebug(htmlx: string, str: MagicString, debugBlock: Node): void { - const content = htmlx.slice(debugBlock.start + '@debug'.length + 1, debugBlock.end); + const content = htmlx.slice(debugBlock.start + '@debug'.length + 1, debugBlock.end - 1); str.overwrite( debugBlock.start, debugBlock.end, diff --git a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx index 5fd54c6bc..694b9de5a 100644 --- a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx +++ b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx @@ -1 +1 @@ -<>{ myfile, someOtherFile } \ No newline at end of file +<>{myfile}{someOtherFile} \ No newline at end of file From 546424f504cd1dd83a185a2b6050c08019d2179e Mon Sep 17 00:00:00 2001 From: pushkine Date: Thu, 7 Jan 2021 20:12:59 +0100 Subject: [PATCH 3/6] mb --- packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts | 8 ++------ .../test/htmlx2jsx/samples/debug-block/expected.jsx | 4 +++- .../test/htmlx2jsx/samples/debug-block/input.svelte | 4 +++- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts index 01588eb14..8be9113a3 100644 --- a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts +++ b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts @@ -7,14 +7,10 @@ import MagicString from 'magic-string'; * tsx won't accept commas, must split * {@debug a, b} ---> {a}{b} */ -export function handleDebug(htmlx: string, str: MagicString, debugBlock: Node): void { - const content = htmlx.slice(debugBlock.start + '@debug'.length + 1, debugBlock.end - 1); +export function handleDebug(_htmlx: string, str: MagicString, debugBlock: Node): void { str.overwrite( debugBlock.start, debugBlock.end, - content - .split(',') - .map((v) => `{${v.trim()}}`) - .join('') + debugBlock.identifiers.map((identifier: Node) => `{${identifier.name}}`).join('') ); } diff --git a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx index 694b9de5a..617f85c90 100644 --- a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx +++ b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/expected.jsx @@ -1 +1,3 @@ -<>{myfile}{someOtherFile} \ No newline at end of file +<>{myfile} +{myfile}{someOtherFile} +{myfile}{someOtherFile}{someThirdFile} \ No newline at end of file diff --git a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/input.svelte b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/input.svelte index ea327e6be..30d95f413 100644 --- a/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/input.svelte +++ b/packages/svelte2tsx/test/htmlx2jsx/samples/debug-block/input.svelte @@ -1 +1,3 @@ -{@debug myfile, someOtherFile } \ No newline at end of file +{@debug myfile} +{@debug myfile , someOtherFile } +{@debug myfile, someOtherFile, someThirdFile } \ No newline at end of file From a273f49436deece90c4d53f1a108fbb46ed9ce1b Mon Sep 17 00:00:00 2001 From: pushkine Date: Fri, 8 Jan 2021 09:10:28 +0100 Subject: [PATCH 4/6] avoid overwrite --- .../svelte2tsx/src/htmlxtojsx/nodes/debug.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts index 8be9113a3..073a1ed25 100644 --- a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts +++ b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts @@ -3,14 +3,16 @@ import MagicString from 'magic-string'; /** * {@debug a} ---> {a} - * - * tsx won't accept commas, must split * {@debug a, b} ---> {a}{b} + * tsx won't accept commas, must split */ export function handleDebug(_htmlx: string, str: MagicString, debugBlock: Node): void { - str.overwrite( - debugBlock.start, - debugBlock.end, - debugBlock.identifiers.map((identifier: Node) => `{${identifier.name}}`).join('') - ); + let cursor = debugBlock.start; + for (const identifier of debugBlock.identifiers as Node[]) { + str.remove(cursor, identifier.start); + str.appendRight(identifier.start, '{'); + str.prependLeft(identifier.end, '}'); + cursor = identifier.end; + } + str.remove(cursor, debugBlock.end); } From 70b187a696e49d3682598e5048988b299a76cb81 Mon Sep 17 00:00:00 2001 From: pushkine Date: Fri, 8 Jan 2021 12:28:37 +0100 Subject: [PATCH 5/6] fix --- packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts index 073a1ed25..f59a12b37 100644 --- a/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts +++ b/packages/svelte2tsx/src/htmlxtojsx/nodes/debug.ts @@ -10,7 +10,7 @@ export function handleDebug(_htmlx: string, str: MagicString, debugBlock: Node): let cursor = debugBlock.start; for (const identifier of debugBlock.identifiers as Node[]) { str.remove(cursor, identifier.start); - str.appendRight(identifier.start, '{'); + str.prependLeft(identifier.start, '{'); str.prependLeft(identifier.end, '}'); cursor = identifier.end; } From 39fd39ab99bff566e924350f0be0e70d24b369e1 Mon Sep 17 00:00:00 2001 From: pushkine Date: Fri, 8 Jan 2021 12:45:24 +0100 Subject: [PATCH 6/6] test --- .../test/svelte2tsx/samples/debug-block/expected.tsx | 9 +++++++++ .../test/svelte2tsx/samples/debug-block/input.svelte | 3 +++ 2 files changed, 12 insertions(+) create mode 100644 packages/svelte2tsx/test/svelte2tsx/samples/debug-block/expected.tsx create mode 100644 packages/svelte2tsx/test/svelte2tsx/samples/debug-block/input.svelte diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/expected.tsx b/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/expected.tsx new file mode 100644 index 000000000..5fafc4ed0 --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/expected.tsx @@ -0,0 +1,9 @@ +/// +<>;function render() { +<>{myfile} +{__sveltets_store_get(myfile)}{someOtherFile} +{myfile}{__sveltets_store_get(someOtherFile)}{someThirdFile} +return { props: {}, slots: {}, getters: {}, events: {} }} + +export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) { +} \ No newline at end of file diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/input.svelte b/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/input.svelte new file mode 100644 index 000000000..b37bfc30b --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/debug-block/input.svelte @@ -0,0 +1,3 @@ +{@debug myfile} +{@debug $myfile , someOtherFile } +{@debug myfile, $someOtherFile, someThirdFile } \ No newline at end of file