From 91e04da9525dccb991f86c7d34dcaa7be8cfb2ef Mon Sep 17 00:00:00 2001 From: Jacob Mischka Date: Fri, 8 Sep 2017 12:12:11 -0500 Subject: [PATCH] Check legacy, quote all reserved names --- src/generators/dom/visitors/Element/Element.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/generators/dom/visitors/Element/Element.ts b/src/generators/dom/visitors/Element/Element.ts index 2ea66f5799..4fa5a04b18 100644 --- a/src/generators/dom/visitors/Element/Element.ts +++ b/src/generators/dom/visitors/Element/Element.ts @@ -14,6 +14,7 @@ import { DomGenerator } from '../../index'; import Block from '../../Block'; import { Node } from '../../../../interfaces'; import { State } from '../../interfaces'; +import reservedNames from '../../../../utils/reservedNames'; const meta = { ':Window': visitWindow, @@ -246,7 +247,7 @@ function getClaimStatement( ) { const attributes = node.attributes .filter((attr: Node) => attr.type === 'Attribute') - .map((attr: Node) => `${quoteProp(attr.name)}: true`) + .map((attr: Node) => `${quoteProp(attr.name, generator.legacy)}: true`) .join(', '); const name = namespace ? node.name : node.name.toUpperCase(); @@ -256,7 +257,9 @@ function getClaimStatement( : `{}`}, ${namespace === namespaces.svg ? true : false})`; } -function quoteProp(name: string) { - if (/[^a-zA-Z_$0-9]/.test(name) || name === 'class') return `"${name}"`; +function quoteProp(name: string, legacy: boolean) { + const isLegacyPropName = legacy && reservedNames.has(name); + + if (/[^a-zA-Z_$0-9]/.test(name) || isLegacyPropName) return `"${name}"`; return name; }