From a9fb93eb32e56a1f59f0feab7545ec4f1048fec3 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 8 Apr 2017 15:29:53 -0400 Subject: [PATCH] remove redundant localElementDepth --- src/generators/dom/Fragment.js | 14 +++++++------- src/generators/dom/index.js | 3 +-- src/generators/dom/visitors/Component.js | 5 ++--- src/generators/dom/visitors/EachBlock.js | 7 +++---- src/generators/dom/visitors/Element.js | 3 +-- src/generators/dom/visitors/IfBlock.js | 7 +++---- src/generators/dom/visitors/MustacheTag.js | 2 +- src/generators/dom/visitors/RawMustacheTag.js | 6 +++--- src/generators/dom/visitors/Text.js | 2 +- src/generators/dom/visitors/YieldTag.js | 4 ++-- 10 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/generators/dom/Fragment.js b/src/generators/dom/Fragment.js index 6c1d8513a1..91b2e9b4bb 100644 --- a/src/generators/dom/Fragment.js +++ b/src/generators/dom/Fragment.js @@ -3,8 +3,8 @@ export default class Fragment { Object.assign( this, options ); } - addElement ( name, renderStatement, target, localElementDepth, needsIdentifier = false ) { - const isToplevel = localElementDepth === 0; + addElement ( name, renderStatement, target, needsIdentifier = false ) { + const isToplevel = !target; if ( needsIdentifier || isToplevel ) { this.builders.create.addLine( `var ${name} = ${renderStatement};` @@ -24,16 +24,16 @@ export default class Fragment { return new Fragment( Object.assign( {}, this, options, { parent: this } ) ); } - createAnchor ( name, target, localElementDepth ) { + createAnchor ( name, target ) { const renderStatement = `${this.generator.helper( 'createComment' )}()`; - this.addElement( name, renderStatement, target, localElementDepth, true ); + this.addElement( name, renderStatement, target, true ); } createMountStatement ( name, target ) { - if ( target === 'target' ) { - this.builders.mount.addLine( `${this.generator.helper( 'insertNode' )}( ${name}, target, anchor );` ); - } else { + if ( target ) { this.builders.create.addLine( `${this.generator.helper( 'appendNode' )}( ${name}, ${target} );` ); + } else { + this.builders.mount.addLine( `${this.generator.helper( 'insertNode' )}( ${name}, target, anchor );` ); } } } \ No newline at end of file diff --git a/src/generators/dom/index.js b/src/generators/dom/index.js index 5d467e7447..c6da772451 100644 --- a/src/generators/dom/index.js +++ b/src/generators/dom/index.js @@ -129,8 +129,7 @@ export default function dom ( parsed, source, options ) { const state = { namespace, - target: 'target', - localElementDepth: 0 + target: null }; parsed.html.children.forEach( node => { diff --git a/src/generators/dom/visitors/Component.js b/src/generators/dom/visitors/Component.js index d8969725e5..6acea16273 100644 --- a/src/generators/dom/visitors/Component.js +++ b/src/generators/dom/visitors/Component.js @@ -35,7 +35,7 @@ export default function visitComponent ( generator, fragment, state, node ) { update: new CodeBuilder() }; - const isToplevel = state.localElementDepth === 0; + const isToplevel = !state.target; generator.hasComponents = true; @@ -85,8 +85,7 @@ export default function visitComponent ( generator, fragment, state, node ) { }); const childState = Object.assign( {}, state, { - target: 'target', - localElementDepth: 0 + target: null }); node.children.forEach( child => { diff --git a/src/generators/dom/visitors/EachBlock.js b/src/generators/dom/visitors/EachBlock.js index 4d0c8414c2..b3f73293ee 100644 --- a/src/generators/dom/visitors/EachBlock.js +++ b/src/generators/dom/visitors/EachBlock.js @@ -13,14 +13,14 @@ export default function visitEachBlock ( generator, fragment, state, node ) { const listName = fragment.getUniqueName( `${name}_value` ); - const isToplevel = state.localElementDepth === 0; + const isToplevel = !state.target; generator.addSourcemapLocations( node.expression ); const { dependencies, snippet } = generator.contextualise( fragment, node.expression ); const anchor = fragment.getUniqueName( `${name}_anchor` ); - fragment.createAnchor( anchor, state.target, state.localElementDepth ); + fragment.createAnchor( anchor, state.target ); const localVars = {}; @@ -210,8 +210,7 @@ export default function visitEachBlock ( generator, fragment, state, node ) { }); const childState = Object.assign( {}, state, { - target: 'target', - localElementDepth: 0 + target: null }); node.children.forEach( child => { diff --git a/src/generators/dom/visitors/Element.js b/src/generators/dom/visitors/Element.js index 5099b875f5..2f286a3e53 100644 --- a/src/generators/dom/visitors/Element.js +++ b/src/generators/dom/visitors/Element.js @@ -32,7 +32,7 @@ export default function visitElement ( generator, fragment, state, node ) { destroy: new CodeBuilder() }; - const isToplevel = state.localElementDepth === 0; + const isToplevel = !state.target; addElementAttributes( generator, fragment, node, local ); @@ -100,7 +100,6 @@ export default function visitElement ( generator, fragment, state, node ) { const childState = Object.assign( {}, state, { elementDepth: state.elementDepth + 1, - localElementDepth: state.localElementDepth + 1, target: name, namespace: local.namespace }); diff --git a/src/generators/dom/visitors/IfBlock.js b/src/generators/dom/visitors/IfBlock.js index 66e60ed7a1..5b008b805e 100644 --- a/src/generators/dom/visitors/IfBlock.js +++ b/src/generators/dom/visitors/IfBlock.js @@ -40,8 +40,7 @@ function generateBlock ( generator, fragment, state, node, name, type ) { }); const childState = Object.assign( {}, state, { - target: 'target', - localElementDepth: 0 + target: null }); // walk the children here @@ -59,11 +58,11 @@ export default function visitIfBlock ( generator, fragment, state, node ) { const currentBlock = fragment.getUniqueName( `current_block` ); const _currentBlock = fragment.getUniqueName( `_current_block` ); - const isToplevel = state.localElementDepth === 0; + const isToplevel = !state.target; const conditionsAndBlocks = getConditionsAndBlocks( generator, fragment, state, node, generator.getUniqueName( `render_if_block` ) ); const anchor = `${name}_anchor`; - fragment.createAnchor( anchor, state.target, state.localElementDepth ); + fragment.createAnchor( anchor, state.target ); fragment.builders.create.addBlock( deindent` function ${getBlock} ( ${params} ) { diff --git a/src/generators/dom/visitors/MustacheTag.js b/src/generators/dom/visitors/MustacheTag.js index 78c1b78e6f..9e6a8681c8 100644 --- a/src/generators/dom/visitors/MustacheTag.js +++ b/src/generators/dom/visitors/MustacheTag.js @@ -7,7 +7,7 @@ export default function visitMustacheTag ( generator, fragment, state, node ) { const { snippet } = generator.contextualise( fragment, node.expression ); fragment.builders.create.addLine( `var last_${name} = ${snippet};` ); - fragment.addElement( name, `${generator.helper( 'createText' )}( last_${name} )`, state.target, state.localElementDepth, true ); + fragment.addElement( name, `${generator.helper( 'createText' )}( last_${name} )`, state.target, true ); // TODO this should be unnecessary once we separate fragments from state const parentFragment = findBlock( fragment ); diff --git a/src/generators/dom/visitors/RawMustacheTag.js b/src/generators/dom/visitors/RawMustacheTag.js index e425cdf5a3..94832530d0 100644 --- a/src/generators/dom/visitors/RawMustacheTag.js +++ b/src/generators/dom/visitors/RawMustacheTag.js @@ -9,12 +9,12 @@ export default function visitRawMustacheTag ( generator, fragment, state, node ) // we would have used comments here, but the `insertAdjacentHTML` api only // exists for `Element`s. const before = `${name}_before`; - fragment.addElement( before, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, state.localElementDepth, true ); + fragment.addElement( before, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, true ); const after = `${name}_after`; - fragment.addElement( after, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, state.localElementDepth, true ); + fragment.addElement( after, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, true ); - const isToplevel = state.localElementDepth === 0; + const isToplevel = !state.target; fragment.builders.create.addLine( `var last_${name} = ${snippet};` ); const mountStatement = `${before}.insertAdjacentHTML( 'afterend', last_${name} );`; diff --git a/src/generators/dom/visitors/Text.js b/src/generators/dom/visitors/Text.js index 7f0e06008e..9198cfeb3c 100644 --- a/src/generators/dom/visitors/Text.js +++ b/src/generators/dom/visitors/Text.js @@ -4,5 +4,5 @@ export default function visitText ( generator, fragment, state, node ) { } const name = fragment.getUniqueName( `text` ); - fragment.addElement( name, `${generator.helper( 'createText' )}( ${JSON.stringify( node.data )} )`, state.target, state.localElementDepth, false ); + fragment.addElement( name, `${generator.helper( 'createText' )}( ${JSON.stringify( node.data )} )`, state.target, false ); } \ No newline at end of file diff --git a/src/generators/dom/visitors/YieldTag.js b/src/generators/dom/visitors/YieldTag.js index 0848836a66..a6419f1ba4 100644 --- a/src/generators/dom/visitors/YieldTag.js +++ b/src/generators/dom/visitors/YieldTag.js @@ -1,9 +1,9 @@ export default function visitYieldTag ( generator, fragment, state ) { const anchor = `yield_anchor`; - fragment.createAnchor( anchor, state.target, state.localElementDepth ); + fragment.createAnchor( anchor, state.target ); fragment.builders.mount.addLine( - `${fragment.component}._yield && ${fragment.component}._yield.mount( ${state.target}, ${anchor} );` + `${fragment.component}._yield && ${fragment.component}._yield.mount( ${state.target || 'target'}, ${anchor} );` ); fragment.builders.destroy.addLine(