From b49f7474ecf1303ac86b47d0a949a54f5f5bab15 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 22 Nov 2017 17:26:32 -0500 Subject: [PATCH] remove snippet from contextualise return value --- src/generators/Generator.ts | 8 +++----- src/generators/dom/visitors/Component.ts | 20 ++++++++----------- src/generators/dom/visitors/EachBlock.ts | 7 ++++--- .../dom/visitors/Element/Attribute.ts | 8 ++++---- .../dom/visitors/Element/StyleAttribute.ts | 4 ++-- .../dom/visitors/Element/addBindings.ts | 5 ++--- .../dom/visitors/Element/addTransitions.ts | 9 ++++++--- src/generators/dom/visitors/IfBlock.ts | 4 +++- src/generators/dom/visitors/shared/Tag.ts | 4 ++-- .../visitors/Component.ts | 6 ++++-- .../visitors/EachBlock.ts | 3 ++- .../server-side-rendering/visitors/Element.ts | 3 ++- .../server-side-rendering/visitors/IfBlock.ts | 3 ++- .../visitors/MustacheTag.ts | 4 +++- .../visitors/RawMustacheTag.ts | 4 +++- .../_config.js | 2 +- 16 files changed, 51 insertions(+), 43 deletions(-) diff --git a/src/generators/Generator.ts b/src/generators/Generator.ts index d5ca344470..c57cee27c3 100644 --- a/src/generators/Generator.ts +++ b/src/generators/Generator.ts @@ -214,8 +214,7 @@ export default class Generator { isEventHandler: boolean ): { contexts: Set, - indexes: Set, - snippet: string + indexes: Set } { // this.addSourcemapLocations(expression); @@ -299,8 +298,7 @@ export default class Generator { return { contexts: usedContexts, - indexes: usedIndexes, - snippet: `[✂${expression.start}-${expression.end}✂]`, + indexes: usedIndexes }; } @@ -694,6 +692,7 @@ export default class Generator { }); return { + snippet: `[✂${node.start}-${node.end}✂]`, dependencies: Array.from(dependencies) }; } @@ -721,7 +720,6 @@ export default class Generator { const name = node.destructuredContexts[i]; const value = `${node.context}[${i}]`; - // contexts.set(node.destructuredContexts[i], `${context}[${i}]`); contextDependencies.set(name, node.metadata.dependencies); } } diff --git a/src/generators/dom/visitors/Component.ts b/src/generators/dom/visitors/Component.ts index 0add0d37b8..bfd52559d6 100644 --- a/src/generators/dom/visitors/Component.ts +++ b/src/generators/dom/visitors/Component.ts @@ -352,8 +352,8 @@ function mungeAttribute(attribute: Node, block: Block): Attribute { } // simple dynamic attributes - const { snippet } = block.contextualise(value.expression); - const dependencies = value.metadata.dependencies; + block.contextualise(value.expression); // TODO remove + const { dependencies, snippet } = value.metadata; // TODO only update attributes that have changed return { @@ -374,16 +374,14 @@ function mungeAttribute(attribute: Node, block: Block): Attribute { if (chunk.type === 'Text') { return stringify(chunk.data); } else { - const { snippet } = block.contextualise( - chunk.expression - ); - const dependencies = chunk.metadata.dependencies; + block.contextualise(chunk.expression); // TODO remove + const { dependencies, snippet } = chunk.metadata; - dependencies.forEach(dependency => { + dependencies.forEach((dependency: string) => { allDependencies.add(dependency); }); - return getExpressionPrecedence(chunk.expression) <= 13 ? `( ${snippet} )` : snippet; + return getExpressionPrecedence(chunk.expression) <= 13 ? `(${snippet})` : snippet; } }) .join(' + '); @@ -398,10 +396,8 @@ function mungeAttribute(attribute: Node, block: Block): Attribute { function mungeBinding(binding: Node, block: Block): Binding { const { name } = getObject(binding.value); - const { snippet, contexts } = block.contextualise( - binding.value - ); - const dependencies = binding.metadata.dependencies; + const { contexts } = block.contextualise(binding.value); + const { dependencies, snippet } = binding.metadata; const contextual = block.contexts.has(name); diff --git a/src/generators/dom/visitors/EachBlock.ts b/src/generators/dom/visitors/EachBlock.ts index c2b61c1177..68b2c38c15 100644 --- a/src/generators/dom/visitors/EachBlock.ts +++ b/src/generators/dom/visitors/EachBlock.ts @@ -45,7 +45,8 @@ export default function visitEachBlock( mountOrIntro, }; - const { snippet } = block.contextualise(node.expression); + block.contextualise(node.expression); + const { snippet } = node.metadata; block.builders.init.addLine(`var ${each_block_value} = ${snippet};`); @@ -362,7 +363,7 @@ function unkeyed( block: Block, state: State, node: Node, - snippet, + snippet: string, { create_each_block, each_block_value, @@ -402,8 +403,8 @@ function unkeyed( } `); - const dependencies = node.metadata.dependencies; const allDependencies = new Set(node._block.dependencies); + const { dependencies } = node.metadata; dependencies.forEach((dependency: string) => { allDependencies.add(dependency); }); diff --git a/src/generators/dom/visitors/Element/Attribute.ts b/src/generators/dom/visitors/Element/Attribute.ts index b76a24a10d..a812b74fce 100644 --- a/src/generators/dom/visitors/Element/Attribute.ts +++ b/src/generators/dom/visitors/Element/Attribute.ts @@ -72,8 +72,8 @@ export default function visitAttribute( if (attribute.value.length === 1) { // single {{tag}} — may be a non-string const { expression } = attribute.value[0]; - const { snippet, indexes } = block.contextualise(expression); - const dependencies = attribute.value[0].metadata.dependencies; + const { indexes } = block.contextualise(expression); + const { dependencies, snippet } = attribute.value[0].metadata; value = snippet; dependencies.forEach(d => { @@ -96,8 +96,8 @@ export default function visitAttribute( if (chunk.type === 'Text') { return stringify(chunk.data); } else { - const { snippet, indexes } = block.contextualise(chunk.expression); - const dependencies = chunk.metadata.dependencies; + const { indexes } = block.contextualise(chunk.expression); + const { dependencies, snippet } = chunk.metadata; if (Array.from(indexes).some(index => block.changeableIndexes.get(index))) { hasChangeableIndex = true; diff --git a/src/generators/dom/visitors/Element/StyleAttribute.ts b/src/generators/dom/visitors/Element/StyleAttribute.ts index 391d4b2a72..36bb79e757 100644 --- a/src/generators/dom/visitors/Element/StyleAttribute.ts +++ b/src/generators/dom/visitors/Element/StyleAttribute.ts @@ -36,8 +36,8 @@ export default function visitStyleAttribute( if (chunk.type === 'Text') { return stringify(chunk.data); } else { - const { snippet, indexes } = block.contextualise(chunk.expression); - const dependencies = chunk.metadata.dependencies; + const { indexes } = block.contextualise(chunk.expression); + const { dependencies, snippet } = chunk.metadata; if (Array.from(indexes).some(index => block.changeableIndexes.get(index))) { hasChangeableIndex = true; diff --git a/src/generators/dom/visitors/Element/addBindings.ts b/src/generators/dom/visitors/Element/addBindings.ts index 17e921df14..a2433abf93 100644 --- a/src/generators/dom/visitors/Element/addBindings.ts +++ b/src/generators/dom/visitors/Element/addBindings.ts @@ -92,9 +92,8 @@ export default function addBindings( let updateCondition: string; const { name } = getObject(binding.value); - const { snippet, contexts } = block.contextualise( - binding.value - ); + const { contexts } = block.contextualise(binding.value); + const { snippet } = binding.metadata; // special case: if you have e.g. `` // and `selected` is an object chosen with a