Improve teardown code by unifying detach branches

pull/110/head
mrkishi 8 years ago
parent 5770048855
commit 119ad1432a

@ -27,8 +27,8 @@ export default function generate ( parsed, source, options ) {
` ); ` );
} }
if ( isToplevel ) { if ( isToplevel ) {
generator.current.teardownStatements.push( deindent` generator.current.detachStatements.push( deindent`
if ( detach ) ${name}.parentNode.removeChild( ${name} ); ${name}.parentNode.removeChild( ${name} );
` ); ` );
} }
}, },
@ -72,6 +72,10 @@ export default function generate ( parsed, source, options ) {
teardown: function ( detach ) { teardown: function ( detach ) {
${fragment.teardownStatements.join( '\n\n' )} ${fragment.teardownStatements.join( '\n\n' )}
if ( detach ) {
${fragment.detachStatements.join( '\n\n' )}
}
} }
}; };
} }
@ -255,6 +259,7 @@ export default function generate ( parsed, source, options ) {
initStatements: [], initStatements: [],
mountStatements: [], mountStatements: [],
updateStatements: [], updateStatements: [],
detachStatements: [],
teardownStatements: [], teardownStatements: [],
contexts: {}, contexts: {},

@ -102,6 +102,7 @@ export default {
return `var ${contextName} = ${listName}[${indexName}];`; return `var ${contextName} = ${listName}[${indexName}];`;
}).join( '\n' ) ], }).join( '\n' ) ],
detachStatements: [],
teardownStatements: [], teardownStatements: [],
counter: counter(), counter: counter(),

@ -17,6 +17,7 @@ export default {
init: [], init: [],
mount: [], mount: [],
update: [], update: [],
detach: [],
teardown: [] teardown: []
}; };
@ -138,7 +139,7 @@ export default {
local.init.unshift( render ); local.init.unshift( render );
if ( isToplevel ) { if ( isToplevel ) {
local.teardown.push( `if ( detach ) ${name}.parentNode.removeChild( ${name} );` ); local.detach.push( `${name}.parentNode.removeChild( ${name} );` );
} }
} }
@ -152,6 +153,7 @@ export default {
generator.current.initStatements.push( local.init.join( '\n' ) ); generator.current.initStatements.push( local.init.join( '\n' ) );
if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) ); if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) );
if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) ); if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) );
generator.current.detachStatements.push( local.detach.join( '\n' ) );
generator.current.teardownStatements.push( local.teardown.join( '\n' ) ); generator.current.teardownStatements.push( local.teardown.join( '\n' ) );
generator.push({ generator.push({

@ -13,6 +13,7 @@ function generateBlock ( generator, node, name ) {
initStatements: [], initStatements: [],
mountStatements: [], mountStatements: [],
updateStatements: [], updateStatements: [],
detachStatements: [],
teardownStatements: [], teardownStatements: [],
counter: counter() counter: counter()

Loading…
Cancel
Save