diff --git a/src/generators/server-side-rendering/visitors/Element.js b/src/generators/server-side-rendering/visitors/Element.js index c5fd7abf31..4b750bf7b1 100644 --- a/src/generators/server-side-rendering/visitors/Element.js +++ b/src/generators/server-side-rendering/visitors/Element.js @@ -1,5 +1,5 @@ import Component from './Component.js'; -import voidElementNames from '../../../utils/voidElementNames.js'; +import isVoidElementName from '../../../utils/isVoidElementName.js'; export default { enter ( generator, node ) { @@ -44,7 +44,7 @@ export default { return; } - if ( !voidElementNames.test( node.name ) ) { + if ( !isVoidElementName( node.name ) ) { generator.append( `` ); } } diff --git a/src/parse/state/tag.js b/src/parse/state/tag.js index 09eda8da9c..b399371fac 100644 --- a/src/parse/state/tag.js +++ b/src/parse/state/tag.js @@ -4,7 +4,7 @@ import readStyle from '../read/style.js'; import { readEventHandlerDirective, readBindingDirective } from '../read/directives.js'; import { trimStart, trimEnd } from '../utils/trim.js'; import { decodeCharacterReferences } from '../utils/html.js'; -import voidElementNames from '../../utils/voidElementNames.js'; +import isVoidElementName from '../../utils/isVoidElementName.js'; const validTagName = /^\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/; const invalidUnquotedAttributeCharacters = /[\s"'=<>\/`]/; @@ -84,7 +84,7 @@ export default function tag ( parser ) { parser.allowWhitespace(); if ( isClosingTag ) { - if ( voidElementNames.test( name ) ) { + if ( isVoidElementName( name ) ) { parser.error( `<${name}> is a void element and cannot have children, or a closing tag`, start ); } @@ -155,7 +155,7 @@ export default function tag ( parser ) { parser.current().children.push( element ); - const selfClosing = parser.eat( '/' ) || voidElementNames.test( name ); + const selfClosing = parser.eat( '/' ) || isVoidElementName( name ); parser.eat( '>', true ); diff --git a/src/utils/isVoidElementName.js b/src/utils/isVoidElementName.js new file mode 100644 index 0000000000..8af4f34db8 --- /dev/null +++ b/src/utils/isVoidElementName.js @@ -0,0 +1,5 @@ +const voidElementNames = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/; + +export default function isVoidElementName ( name ) { + return voidElementNames.test( name ) || name.toLowerCase() === '!doctype'; +} diff --git a/src/utils/voidElementNames.js b/src/utils/voidElementNames.js deleted file mode 100644 index 46306ac8c3..0000000000 --- a/src/utils/voidElementNames.js +++ /dev/null @@ -1 +0,0 @@ -export default /^(?:area|base|br|col|command|\!doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;