diff --git a/package-lock.json b/package-lock.json index 824e21a9..483011c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4366,9 +4366,9 @@ } }, "svelte": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.22.2.tgz", - "integrity": "sha512-DxumO0+vvHA6NSc2jtVty08I8lFI43q8P2zX6JxZL8J1kqK5NVjad6TRM/twhnWXC+QScnwkZ15O6X1aTsEKTA==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.28.0.tgz", + "integrity": "sha512-WJW8wD+aTmU5GUnTUjdhVF35mve2MjylubLgB6fGWoXHpYENdwcwWsWvjMQLayzMynqNH733h1Ck8wJzNR7gdQ==", "dev": true }, "symbol-observable": { diff --git a/package.json b/package.json index 2dbd27b6..bd857862 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "rollup-plugin-commonjs": "9.2.0", "rollup-plugin-node-resolve": "4.0.0", "rollup-plugin-typescript": "1.0.0", - "svelte": "^3.20.0", + "svelte": "^3.28.0", "ts-node": "^7.0.1", "tslib": "^1.9.3", "typescript": "3.2.4" diff --git a/src/print/index.ts b/src/print/index.ts index 14cd52c0..80ec7e3d 100644 --- a/src/print/index.ts +++ b/src/print/index.ts @@ -379,6 +379,18 @@ export function print(path: FastPath, options: ParserOptions, print: PrintFn): D return group(concat(block)); } + case 'KeyBlock': { + const def: Doc[] = [ + '{#key ', + printJS(path, print, 'expression'), + '}', + printIndentedWithNewlines(path, print), + ]; + + def.push('{/key}'); + + return concat([group(concat(def)), breakParent]); + } case 'ThenBlock': case 'PendingBlock': case 'CatchBlock': diff --git a/src/print/nodes.ts b/src/print/nodes.ts index dced6e75..38861eff 100644 --- a/src/print/nodes.ts +++ b/src/print/nodes.ts @@ -76,6 +76,12 @@ export interface AwaitBlockNode extends BaseNode { catch: CatchBlockNode; } +export interface KeyBlockNode extends BaseNode { + type: 'KeyBlock'; + expression: Node; + children: Node[]; +} + export interface ThenBlockNode extends BaseNode { type: 'ThenBlock'; children: Node[]; @@ -257,6 +263,7 @@ export type Node = | ElseBlockNode | EachBlockNode | AwaitBlockNode + | KeyBlockNode | ThenBlockNode | PendingBlockNode | CatchBlockNode diff --git a/test/printer/samples/key-block.html b/test/printer/samples/key-block.html new file mode 100644 index 00000000..b5084ec2 --- /dev/null +++ b/test/printer/samples/key-block.html @@ -0,0 +1,10 @@ +{#key value} +

hello

+

hello

+{/key} +{#key $store} +

hello

+{/key} +{#key expr.obj} +

hello

+{/key}