simplify toHTML by relying on node.parent

pull/1163/head
Conduitry 8 years ago
parent fc2ecce4ef
commit 7d51484631

@ -232,7 +232,7 @@ export default class Element extends Node {
);
} else {
block.builders.create.addLine(
`${name}.innerHTML = ${stringify(this.children.map(node => toHTML(node, false)).join(''))};`
`${name}.innerHTML = ${stringify(this.children.map(toHTML).join(''))};`
);
}
} else {
@ -414,9 +414,13 @@ export default class Element extends Node {
);
}
function toHTML(node: Element | Text, dontEscapeText: Boolean) {
function toHTML(node: Element | Text) {
if (node.type === 'Text') {
return dontEscapeText ? node.data : escapeHTML(node.data);
return node.parent &&
node.parent.type === 'Element' &&
(node.parent.name === 'script' || node.parent.name === 'style')
? node.data
: escapeHTML(node.data);
}
let open = `<${node.name}`;
@ -435,9 +439,7 @@ export default class Element extends Node {
if (isVoidElementName(node.name)) return open + '>';
const shouldNotEscapeText = node.name === 'script' || node.name === 'style';
return `${open}>${node.children.map(node => toHTML(node, shouldNotEscapeText)).join('')}</${node.name}>`;
return `${open}>${node.children.map(toHTML).join('')}</${node.name}>`;
}
}

Loading…
Cancel
Save