From 6d46efe3ddf738f95f0c77f6d2b1b8b83e022a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A7Domenik=20Reitzner?= Date: Thu, 30 Apr 2020 09:25:41 +0200 Subject: [PATCH] Rewrite prefix logic and update tests --- src/compiler/compile/css/Stylesheet.ts | 2 +- src/compiler/compile/utils/get_prefix.ts | 2 +- test/css/index.js | 8 +++++++- .../custom-prefix-has-special-character/_config.js | 2 +- .../custom-prefix-has-special-character/expected.css | 2 +- test/css/samples/custom-prefix-has-whitespace/_config.js | 2 +- .../css/samples/custom-prefix-has-whitespace/expected.css | 2 +- .../samples/custom-prefix-starts-with-number/_config.js | 2 +- .../samples/custom-prefix-starts-with-number/expected.css | 2 +- .../custom-prefix-starts-with-whitespace/_config.js | 2 +- .../custom-prefix-starts-with-whitespace/expected.css | 2 +- test/css/samples/custom-prefix/_config.js | 2 +- test/css/samples/custom-prefix/expected.css | 2 +- 13 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/compiler/compile/css/Stylesheet.ts b/src/compiler/compile/css/Stylesheet.ts index 4bf8f3bd14..94cf6641e4 100644 --- a/src/compiler/compile/css/Stylesheet.ts +++ b/src/compiler/compile/css/Stylesheet.ts @@ -298,7 +298,7 @@ export default class Stylesheet { this.dev = dev; if (ast.css && ast.css.children.length) { - this.id = `${prefix}${hash(ast.css.content.styles)}`; + this.id = `${prefix}-${hash(ast.css.content.styles)}`; this.has_styles = true; diff --git a/src/compiler/compile/utils/get_prefix.ts b/src/compiler/compile/utils/get_prefix.ts index cec805115f..9bed13e30b 100644 --- a/src/compiler/compile/utils/get_prefix.ts +++ b/src/compiler/compile/utils/get_prefix.ts @@ -1,5 +1,5 @@ export default function get_prefix(str?: string): string { - const standard_prefix = 'svelte-'; + const standard_prefix = 'svelte'; if (!str || typeof str !== 'string') return standard_prefix; str = str.replace(/^[^_\-a-z]+|[^_\-a-z0-9]/gi, ''); diff --git a/test/css/index.js b/test/css/index.js index dc17314597..5fd9faae0d 100644 --- a/test/css/index.js +++ b/test/css/index.js @@ -84,7 +84,13 @@ describe('css', () => { css: read(`${__dirname}/samples/${dir}/expected.css`) }; - const actual_css = dom.css.code.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz'); + const replacement = ((config.compileOptions || {}).prefix) + ? '-xyz{' + : 'svelte-xyz'; + const regex = ((config.compileOptions || {}).prefix) + ? /(-ref)?-[a-z0-9]+\{/g + : /svelte(-ref)?-[a-z0-9]+/g; + const actual_css = dom.css.code.replace(regex, (m, $1) => $1 ? m : replacement); try { assert.equal(actual_css, expected.css); } catch (error) { diff --git a/test/css/samples/custom-prefix-has-special-character/_config.js b/test/css/samples/custom-prefix-has-special-character/_config.js index fbdade1aed..18ab647839 100644 --- a/test/css/samples/custom-prefix-has-special-character/_config.js +++ b/test/css/samples/custom-prefix-has-special-character/_config.js @@ -1,5 +1,5 @@ export default { compileOptions: { - prefix: 'me$-' + prefix: 'me$' } }; \ No newline at end of file diff --git a/test/css/samples/custom-prefix-has-special-character/expected.css b/test/css/samples/custom-prefix-has-special-character/expected.css index 5337b4fa44..2af15fb797 100644 --- a/test/css/samples/custom-prefix-has-special-character/expected.css +++ b/test/css/samples/custom-prefix-has-special-character/expected.css @@ -1 +1 @@ -div.me-1tjtw78{color:blue} \ No newline at end of file +div.me-xyz{color:blue} \ No newline at end of file diff --git a/test/css/samples/custom-prefix-has-whitespace/_config.js b/test/css/samples/custom-prefix-has-whitespace/_config.js index edc54acd52..ba04f4a111 100644 --- a/test/css/samples/custom-prefix-has-whitespace/_config.js +++ b/test/css/samples/custom-prefix-has-whitespace/_config.js @@ -1,5 +1,5 @@ export default { compileOptions: { - prefix: 'me -' + prefix: 'm e' } }; \ No newline at end of file diff --git a/test/css/samples/custom-prefix-has-whitespace/expected.css b/test/css/samples/custom-prefix-has-whitespace/expected.css index 5337b4fa44..2af15fb797 100644 --- a/test/css/samples/custom-prefix-has-whitespace/expected.css +++ b/test/css/samples/custom-prefix-has-whitespace/expected.css @@ -1 +1 @@ -div.me-1tjtw78{color:blue} \ No newline at end of file +div.me-xyz{color:blue} \ No newline at end of file diff --git a/test/css/samples/custom-prefix-starts-with-number/_config.js b/test/css/samples/custom-prefix-starts-with-number/_config.js index 0ede6c75e2..3d6f9735fc 100644 --- a/test/css/samples/custom-prefix-starts-with-number/_config.js +++ b/test/css/samples/custom-prefix-starts-with-number/_config.js @@ -1,5 +1,5 @@ export default { compileOptions: { - prefix: '0me-' + prefix: '0me' } }; \ No newline at end of file diff --git a/test/css/samples/custom-prefix-starts-with-number/expected.css b/test/css/samples/custom-prefix-starts-with-number/expected.css index 5337b4fa44..2af15fb797 100644 --- a/test/css/samples/custom-prefix-starts-with-number/expected.css +++ b/test/css/samples/custom-prefix-starts-with-number/expected.css @@ -1 +1 @@ -div.me-1tjtw78{color:blue} \ No newline at end of file +div.me-xyz{color:blue} \ No newline at end of file diff --git a/test/css/samples/custom-prefix-starts-with-whitespace/_config.js b/test/css/samples/custom-prefix-starts-with-whitespace/_config.js index 3cdadf669e..c0f23c1e58 100644 --- a/test/css/samples/custom-prefix-starts-with-whitespace/_config.js +++ b/test/css/samples/custom-prefix-starts-with-whitespace/_config.js @@ -1,5 +1,5 @@ export default { compileOptions: { - prefix: ' me-' + prefix: ' me' } }; \ No newline at end of file diff --git a/test/css/samples/custom-prefix-starts-with-whitespace/expected.css b/test/css/samples/custom-prefix-starts-with-whitespace/expected.css index 5337b4fa44..2af15fb797 100644 --- a/test/css/samples/custom-prefix-starts-with-whitespace/expected.css +++ b/test/css/samples/custom-prefix-starts-with-whitespace/expected.css @@ -1 +1 @@ -div.me-1tjtw78{color:blue} \ No newline at end of file +div.me-xyz{color:blue} \ No newline at end of file diff --git a/test/css/samples/custom-prefix/_config.js b/test/css/samples/custom-prefix/_config.js index 1ff263f07d..95391be75b 100644 --- a/test/css/samples/custom-prefix/_config.js +++ b/test/css/samples/custom-prefix/_config.js @@ -1,5 +1,5 @@ export default { compileOptions: { - prefix: 'me-' + prefix: 'me' } }; \ No newline at end of file diff --git a/test/css/samples/custom-prefix/expected.css b/test/css/samples/custom-prefix/expected.css index 5337b4fa44..2af15fb797 100644 --- a/test/css/samples/custom-prefix/expected.css +++ b/test/css/samples/custom-prefix/expected.css @@ -1 +1 @@ -div.me-1tjtw78{color:blue} \ No newline at end of file +div.me-xyz{color:blue} \ No newline at end of file