Commit 54de6706 authored by Eric MORAND's avatar Eric MORAND
Browse files

Resolve issue #641

parent 52a1ecaa
Loading
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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();

@@ -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();

@@ -63,4 +69,6 @@ export const executeSetNodeSynchronously: TwingSynchronousNodeExecutor<TwingSetN
            index++;
        }
    }

    executionContext.sourceMapRuntime = sourceMapRuntime;
};
+1 −0
Original line number Diff line number Diff line
@@ -4,3 +4,4 @@ import "./with-custom-function";
import "./with-embedding";
import "./with-inclusion";
import "./with-inheritance";
import "./with-set";
+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`
});