node-html-parser
Version:
A very fast HTML parser, generating a simplified DOM, with basic element query support.
28 lines (27 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class VoidTag {
constructor(addClosingSlash = false, tags) {
this.addClosingSlash = addClosingSlash;
if (Array.isArray(tags)) {
this.voidTags = tags.reduce((set, tag) => {
return set.add(tag.toLowerCase()).add(tag.toUpperCase()).add(tag);
}, new Set());
}
else {
this.voidTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'].reduce((set, tag) => {
return set.add(tag.toLowerCase()).add(tag.toUpperCase()).add(tag);
}, new Set());
}
}
formatNode(tag, attrs, innerHTML) {
const addClosingSlash = this.addClosingSlash;
const closingSpace = (addClosingSlash && attrs && !attrs.endsWith(' ')) ? ' ' : '';
const closingSlash = addClosingSlash ? `${closingSpace}/` : '';
return this.isVoidElement(tag.toLowerCase()) ? `<${tag}${attrs}${closingSlash}>` : `<${tag}${attrs}>${innerHTML}</${tag}>`;
}
isVoidElement(tag) {
return this.voidTags.has(tag);
}
}
exports.default = VoidTag;