diff --git a/src/generators/Generator.js b/src/generators/Generator.js index 6737f1f99a..44d069d06c 100644 --- a/src/generators/Generator.js +++ b/src/generators/Generator.js @@ -193,6 +193,11 @@ export default class Generator { return counter( this.names ); } + helper ( name ) { + this.uses[ name ] = true; + return name; + } + parseJs () { const { source } = this; const { js } = this.parsed; diff --git a/src/generators/dom/visitors/EachBlock.js b/src/generators/dom/visitors/EachBlock.js index 700e16ef7a..e9e0eb4fd3 100644 --- a/src/generators/dom/visitors/EachBlock.js +++ b/src/generators/dom/visitors/EachBlock.js @@ -151,9 +151,8 @@ export default { ` ); } - generator.uses.teardownEach = true; generator.current.builders.teardown.addBlock( - `teardownEach( ${iterations}, ${isToplevel ? 'detach' : 'false'} );` ); + `${generator.helper( 'teardownEach' )}( ${iterations}, ${isToplevel ? 'detach' : 'false'} );` ); if ( node.else ) { generator.current.builders.teardown.addBlock( deindent` diff --git a/src/generators/dom/visitors/Element.js b/src/generators/dom/visitors/Element.js index b200b9710c..f648a3caf9 100644 --- a/src/generators/dom/visitors/Element.js +++ b/src/generators/dom/visitors/Element.js @@ -61,25 +61,21 @@ export default { if ( local.namespace ) { if ( local.namespace === 'http://www.w3.org/2000/svg' ) { - generator.uses.createSvgElement = true; - render = `var ${name} = createSvgElement( '${node.name}' )`; + render = `var ${name} = ${generator.helper( 'createSvgElement' )}( '${node.name}' )`; } else { render = `var ${name} = document.createElementNS( '${local.namespace}', '${node.name}' );`; } } else { - generator.uses.createElement = true; - render = `var ${name} = createElement( '${node.name}' );`; + render = `var ${name} = ${generator.helper( 'createElement' )}( '${node.name}' );`; } if ( generator.cssId && !generator.elementDepth ) { - generator.uses.setAttribute = true; - render += `\nsetAttribute( ${name}, '${generator.cssId}', '' );`; + render += `\n${generator.helper( 'setAttribute' )}( ${name}, '${generator.cssId}', '' );`; } local.init.addLineAtStart( render ); if ( isToplevel ) { - generator.uses.detachNode = true; - generator.current.builders.detach.addLine( `detachNode( ${name} );` ); + generator.current.builders.detach.addLine( `${generator.helper( 'detachNode' )}( ${name} );` ); } // special case – bound