move createAnchor out of generator

pull/204/head
Rich Harris 9 years ago
parent 529d3a4a0e
commit b71ec52cae

@ -96,19 +96,6 @@ export default class Generator {
};
}
createAnchor ( _name, description = '' ) {
const name = `${_name}_anchor`;
const renderStatement = `document.createComment( ${JSON.stringify( description )} )`;
this.fire( 'addElement', {
name,
renderStatement,
needsIdentifier: true
});
return name;
}
createMountStatement ( name ) {
if ( this.current.target === 'target' ) {
this.current.builders.mount.addLine(

@ -56,8 +56,8 @@ export default function dom ( parsed, source, options, names ) {
generator.on( 'addRenderer', addRenderer );
generator.on( 'addElement', function addElement ({ name, renderStatement, needsIdentifier }) {
const isToplevel = this.current.localElementDepth === 0;
generator.on( 'addElement', ({ name, renderStatement, needsIdentifier }) => {
const isToplevel = generator.current.localElementDepth === 0;
if ( needsIdentifier || isToplevel ) {
generator.current.builders.init.addLine(
`var ${name} = ${renderStatement};`
@ -77,6 +77,16 @@ export default function dom ( parsed, source, options, names ) {
}
});
generator.on( 'createAnchor', ({ name, description = '' }) => {
const renderStatement = `document.createComment( ${JSON.stringify( description )} )`;
generator.fire( 'addElement', {
name,
renderStatement,
needsIdentifier: true
});
});
let namespace = null;
if ( templateProperties.namespace ) {
const ns = templateProperties.namespace.value;

@ -18,7 +18,11 @@ export default {
const { dependencies, snippet } = generator.contextualise( node.expression );
const anchor = generator.createAnchor( name, `#each ${generator.source.slice( node.expression.start, node.expression.end )}` );
const anchor = `${name}_anchor`;
generator.fire( 'createAnchor', {
name: anchor,
description: `#each ${generator.source.slice( node.expression.start, node.expression.end )}`
});
generator.current.builders.init.addBlock( deindent`
var ${name}_value = ${snippet};

@ -37,7 +37,11 @@ export default {
const isToplevel = generator.current.localElementDepth === 0;
const conditionsAndBlocks = getConditionsAndBlocks( generator, node, generator.getUniqueName( `renderIfBlock` ) );
const anchor = generator.createAnchor( name, `#if ${generator.source.slice( node.expression.start, node.expression.end )}` );
const anchor = `${name}_anchor`;
generator.fire( 'createAnchor', {
name: anchor,
description: `#if ${generator.source.slice( node.expression.start, node.expression.end )}`
});
generator.current.builders.init.addBlock( deindent`
function ${getBlock} ( ${params} ) {

@ -1,6 +1,10 @@
export default {
enter ( generator ) {
const anchor = generator.createAnchor( 'yield', 'yield' );
const anchor = `yield_anchor`;
generator.fire( 'createAnchor', {
name: anchor,
description: 'yield'
});
generator.current.builders.mount.addLine(
`component.yield && component.yield.mount( ${generator.current.target}, ${anchor} );`

Loading…
Cancel
Save