Loading src/main/lib/node-executor/set.ts +10 −2 Original line number Diff line number Diff line Loading @@ -2,12 +2,14 @@ import {TwingNodeExecutor, TwingSynchronousNodeExecutor} from "../node-executor" import {TwingSetNode} from "../node/set"; export const executeSetNode: TwingNodeExecutor<TwingSetNode> = async (node, executionContext) => { const {context, nodeExecutor: execute, outputBuffer} = executionContext; const {context, nodeExecutor: execute, outputBuffer, sourceMapRuntime} = executionContext; const {names: namesNode, values: valuesNode} = node.children; const {captures} = node.attributes; const names: Array<string> = await execute(namesNode, executionContext); executionContext.sourceMapRuntime = undefined; if (captures) { outputBuffer.start(); Loading @@ -31,15 +33,19 @@ export const executeSetNode: TwingNodeExecutor<TwingSetNode> = async (node, exec index++; } } executionContext.sourceMapRuntime = sourceMapRuntime; }; export const executeSetNodeSynchronously: TwingSynchronousNodeExecutor<TwingSetNode> = (node, executionContext) => { const {context, nodeExecutor: execute, outputBuffer} = executionContext; const {context, nodeExecutor: execute, outputBuffer, sourceMapRuntime} = executionContext; const {names: namesNode, values: valuesNode} = node.children; const {captures} = node.attributes; const names: Array<string> = execute(namesNode, executionContext); executionContext.sourceMapRuntime = undefined; if (captures) { outputBuffer.start(); Loading @@ -63,4 +69,6 @@ export const executeSetNodeSynchronously: TwingSynchronousNodeExecutor<TwingSetN index++; } } executionContext.sourceMapRuntime = sourceMapRuntime; }; src/test/tests/integration/source-map/index.ts +1 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,4 @@ import "./with-custom-function"; import "./with-embedding"; import "./with-inclusion"; import "./with-inheritance"; import "./with-set"; src/test/tests/integration/source-map/with-set.ts 0 → 100644 +28 −0 Original line number Diff line number Diff line import {runTest} from "../TestBase"; runTest({ description: 'Source map supports set tag', templates: { 'index.twig': `{% set content %} {{ include("partial.twig") }} {% endset %} {{ content }} {{ "index content" }}`, 'partial.twig': ` {{ "partial content" }} ` }, context: {}, expectedSourceMapMappings: [ {source: 'index.twig', generatedLine: 1, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 2, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 3, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 4, generatedColumn: 0, originalLine: 4, originalColumn: 13, name: 'text'}, {source: 'index.twig', generatedLine: 5, generatedColumn: 0, originalLine: 5, originalColumn: 0, name: 'print'}, ], expectation: ` partial content index content` }); Loading
src/main/lib/node-executor/set.ts +10 −2 Original line number Diff line number Diff line Loading @@ -2,12 +2,14 @@ import {TwingNodeExecutor, TwingSynchronousNodeExecutor} from "../node-executor" import {TwingSetNode} from "../node/set"; export const executeSetNode: TwingNodeExecutor<TwingSetNode> = async (node, executionContext) => { const {context, nodeExecutor: execute, outputBuffer} = executionContext; const {context, nodeExecutor: execute, outputBuffer, sourceMapRuntime} = executionContext; const {names: namesNode, values: valuesNode} = node.children; const {captures} = node.attributes; const names: Array<string> = await execute(namesNode, executionContext); executionContext.sourceMapRuntime = undefined; if (captures) { outputBuffer.start(); Loading @@ -31,15 +33,19 @@ export const executeSetNode: TwingNodeExecutor<TwingSetNode> = async (node, exec index++; } } executionContext.sourceMapRuntime = sourceMapRuntime; }; export const executeSetNodeSynchronously: TwingSynchronousNodeExecutor<TwingSetNode> = (node, executionContext) => { const {context, nodeExecutor: execute, outputBuffer} = executionContext; const {context, nodeExecutor: execute, outputBuffer, sourceMapRuntime} = executionContext; const {names: namesNode, values: valuesNode} = node.children; const {captures} = node.attributes; const names: Array<string> = execute(namesNode, executionContext); executionContext.sourceMapRuntime = undefined; if (captures) { outputBuffer.start(); Loading @@ -63,4 +69,6 @@ export const executeSetNodeSynchronously: TwingSynchronousNodeExecutor<TwingSetN index++; } } executionContext.sourceMapRuntime = sourceMapRuntime; };
src/test/tests/integration/source-map/index.ts +1 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,4 @@ import "./with-custom-function"; import "./with-embedding"; import "./with-inclusion"; import "./with-inheritance"; import "./with-set";
src/test/tests/integration/source-map/with-set.ts 0 → 100644 +28 −0 Original line number Diff line number Diff line import {runTest} from "../TestBase"; runTest({ description: 'Source map supports set tag', templates: { 'index.twig': `{% set content %} {{ include("partial.twig") }} {% endset %} {{ content }} {{ "index content" }}`, 'partial.twig': ` {{ "partial content" }} ` }, context: {}, expectedSourceMapMappings: [ {source: 'index.twig', generatedLine: 1, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 2, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 3, generatedColumn: 0, originalLine: 4, originalColumn: 0, name: 'print'}, {source: 'index.twig', generatedLine: 4, generatedColumn: 0, originalLine: 4, originalColumn: 13, name: 'text'}, {source: 'index.twig', generatedLine: 5, generatedColumn: 0, originalLine: 5, originalColumn: 0, name: 'print'}, ], expectation: ` partial content index content` });