diff --git a/compiler/generate/index.js b/compiler/generate/index.js index 5129f4465e..df742d162e 100644 --- a/compiler/generate/index.js +++ b/compiler/generate/index.js @@ -2,7 +2,6 @@ import MagicString from 'magic-string'; import { walk } from 'estree-walker'; import deindent from './utils/deindent.js'; import walkHtml from './utils/walkHtml.js'; -import flattenReference from './utils/flattenReference.js'; import isReference from './utils/isReference.js'; import contextualise from './utils/contextualise.js'; import counter from './utils/counter.js'; @@ -54,6 +53,13 @@ export default function generate ( parsed, template ) { } } + const helpers = {}; + if ( templateProperties.helpers ) { + templateProperties.helpers.properties.forEach( prop => { + helpers[ prop.key.name ] = prop.value; + }); + } + const renderers = []; const expressionFunctions = []; @@ -86,6 +92,10 @@ export default function generate ( parsed, template ) { parsed.html.children.forEach( child => { walkHtml( child, { + Comment: { + // do nothing + }, + Element: { enter ( node ) { const name = current.counter( node.name ); @@ -105,7 +115,7 @@ export default function generate ( parsed, template ) { node.attributes.forEach( attribute => { if ( attribute.type === 'Attribute' ) { let metadata = attributeLookup[ attribute.name ]; - if ( metadata.appliesTo && !~metadata.appliesTo.indexOf( node.name ) ) metadata = null; + if ( metadata && metadata.appliesTo && !~metadata.appliesTo.indexOf( node.name ) ) metadata = null; if ( attribute.value === true ) { // attributes without values, e.g.