Skip to content

Commit 20d3cb4

Browse files
authored
(feat) support svelte:element (#285)
1 parent b10349d commit 20d3cb4

File tree

6 files changed

+43
-9
lines changed

6 files changed

+43
-9
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# prettier-plugin-svelte changelog
22

3-
## 2.6.1 (Unreleased)
3+
## 2.7.0 (Unreleased)
44

5+
* (feat) support `<svelte:element>` ([#284](https://github.com/sveltejs/prettier-plugin-svelte/pull/284))
56
* (fix) respect whitespace "ignore" setting for components ([#281](https://github.com/sveltejs/prettier-plugin-svelte/issues/281))
67

78
## 2.6.0

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"prettier": "^2.4.1",
3838
"rollup": "2.36.0",
3939
"rollup-plugin-typescript": "1.0.1",
40-
"svelte": "^3.46.1",
40+
"svelte": "^3.47.0",
4141
"ts-node": "^9.1.1",
4242
"tslib": "^2.0.3",
4343
"typescript": "4.1.3"

src/print/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,25 @@ export function print(path: FastPath, options: ParserOptions, print: PrintFn): D
202202
const possibleThisBinding =
203203
node.type === 'InlineComponent' && node.expression
204204
? concat([line, 'this=', ...printJsExpression()])
205+
: node.type === 'Element' && node.tag
206+
? concat([
207+
line,
208+
'this=',
209+
...(typeof node.tag === 'string'
210+
? [`"${node.tag}"`]
211+
: [
212+
open,
213+
printJS(
214+
path,
215+
print,
216+
options.svelteStrictMode,
217+
false,
218+
false,
219+
'tag',
220+
),
221+
close,
222+
]),
223+
])
205224
: '';
206225

207226
if (isSelfClosingTag) {

src/print/nodes.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export interface ElementNode extends BaseNode {
1717
name: string;
1818
attributes: Node[];
1919
children: Node[];
20+
/**
21+
* only on svelte:element
22+
*/
23+
tag?: Node;
2024
}
2125

2226
export interface TextNode extends BaseNode {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script>
2+
let tag = "div";
3+
</script>
4+
5+
<svelte:element this={tag} />
6+
<svelte:element this="hello" />
7+
<svelte:element this={"hello"} />
8+
<!-- Bug, will be fixed soon: -->
9+
<!-- <svelte:element this="asd{tag}" /> -->
10+
<svelte:element this={`asd${tag}`} />

0 commit comments

Comments
 (0)