remove snippet from contextualise return value

pull/924/head
Rich Harris 8 years ago
parent 9f2c54359e
commit b49f7474ec

@ -214,8 +214,7 @@ export default class Generator {
isEventHandler: boolean
): {
contexts: Set<string>,
indexes: Set<string>,
snippet: string
indexes: Set<string>
} {
// 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);
}
}

@ -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,12 +374,10 @@ 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);
});
@ -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);

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

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

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

@ -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. `<input type=checkbox bind:checked=selected.done>`
// and `selected` is an object chosen with a <select>, then when `checked` changes,

@ -15,10 +15,13 @@ export default function addTransitions(
if (!intro && !outro) return;
if (intro) block.contextualise(intro.expression); // TODO remove all these
if (outro) block.contextualise(outro.expression);
if (intro === outro) {
const name = block.getUniqueName(`${node.var}_transition`);
const snippet = intro.expression
? block.contextualise(intro.expression).snippet
? intro.expression.metadata.snippet
: '{}';
block.addVariable(name);
@ -48,7 +51,7 @@ export default function addTransitions(
if (intro) {
block.addVariable(introName);
const snippet = intro.expression
? block.contextualise(intro.expression).snippet
? intro.expression.metadata.snippet
: '{}';
const fn = `%transitions-${intro.name}`; // TODO add built-in transitions?
@ -73,7 +76,7 @@ export default function addTransitions(
if (outro) {
block.addVariable(outroName);
const snippet = outro.expression
? block.contextualise(outro.expression).snippet
? intro.expression.metadata.snippet
: '{}';
const fn = `%transitions-${outro.name}`;

@ -24,9 +24,11 @@ function getBranches(
elementStack: Node[],
componentStack: Node[]
) {
block.contextualise(node.expression); // TODO remove
const branches = [
{
condition: block.contextualise(node.expression).snippet,
condition: node.metadata.snippet,
block: node._block.name,
hasUpdateMethod: node._block.hasUpdateMethod,
hasIntroMethod: node._block.hasIntroMethod,

@ -12,8 +12,8 @@ export default function visitTag(
name: string,
update: (value: string) => string
) {
const { indexes, snippet } = block.contextualise(node.expression);
const dependencies = node.metadata.dependencies;
const { indexes } = block.contextualise(node.expression);
const { dependencies, snippet } = node.metadata;
const hasChangeableIndex = Array.from(indexes).some(index => block.changeableIndexes.get(index));

@ -16,7 +16,8 @@ export default function visitComponent(
function stringifyAttribute(chunk: Node) {
if (chunk.type === 'Text') return chunk.data;
if (chunk.type === 'MustacheTag') {
const { snippet } = block.contextualise(chunk.expression);
block.contextualise(chunk.expression);
const { snippet } = chunk.metadata;
return '${__escape( ' + snippet + ')}';
}
}
@ -45,7 +46,8 @@ export default function visitComponent(
if (chunk.type === 'Text') {
value = isNaN(chunk.data) ? stringify(chunk.data) : chunk.data;
} else {
const { snippet } = block.contextualise(chunk.expression);
block.contextualise(chunk.expression);
const { snippet } = chunk.metadata;
value = snippet;
}
} else {

@ -8,7 +8,8 @@ export default function visitEachBlock(
block: Block,
node: Node
) {
const { dependencies, snippet } = block.contextualise(node.expression);
block.contextualise(node.expression);
const { dependencies, snippet } = node.metadata;
const open = `\${ ${node.else ? `${snippet}.length ? ` : ''}${snippet}.map(${node.index ? `(${node.context}, ${node.index})` : node.context} => \``;
generator.append(open);

@ -19,7 +19,8 @@ function stringifyAttributeValue(block: Block, chunks: Node[]) {
return escape(chunk.data).replace(/"/g, '&quot;');
}
const { snippet } = block.contextualise(chunk.expression);
block.contextualise(chunk.expression);
const { snippet } = chunk.metadata;
return '${' + snippet + '}';
})
.join('');

@ -8,7 +8,8 @@ export default function visitIfBlock(
block: Block,
node: Node
) {
const { snippet } = block.contextualise(node.expression);
block.contextualise(node.expression);
const { snippet } = node.metadata;
generator.append('${ ' + snippet + ' ? `');

@ -7,6 +7,8 @@ export default function visitMustacheTag(
block: Block,
node: Node
) {
const { snippet } = block.contextualise(node.expression);
block.contextualise(node.expression);
const { snippet } = node.metadata;
generator.append('${__escape(' + snippet + ')}');
}

@ -7,6 +7,8 @@ export default function visitRawMustacheTag(
block: Block,
node: Node
) {
const { snippet } = block.contextualise(node.expression);
block.contextualise(node.expression);
const { snippet } = node.metadata;
generator.append('${' + snippet + '}');
}

Loading…
Cancel
Save