[FIX] qweb: properly handle xml comments

This commit is contained in:
Géry Debongnie
2019-10-15 13:41:18 +02:00
committed by aab-odoo
parent d40ff53f5a
commit 2825a5a55d
4 changed files with 17 additions and 9 deletions
+1 -1
View File
@@ -101,7 +101,7 @@ export class Component<T extends Env, Props extends {}> {
readonly __owl__: Internal<Env, Props>;
static template?: string | null = null;
static _template?: string | null = null;
static current: Component<any,any> | null = null;
static current: Component<any, any> | null = null;
static components = {};
static props?: any;
static defaultProps?: any;
+10 -4
View File
@@ -104,8 +104,6 @@ const UTILS: Utils = {
function parseXML(xml: string): Document {
const parser = new DOMParser();
// we remove comments from the xml string
xml = xml.replace(/<!--[\s\S]*?-->/g, "");
const doc = parser.parseFromString(xml, "text/xml");
if (doc.getElementsByTagName("parsererror").length) {
let msg = "Invalid XML in template.";
@@ -421,7 +419,11 @@ export class QWeb extends EventBus {
text = text.replace(whitespaceRE, " ");
}
if (ctx.parentNode) {
ctx.addLine(`c${ctx.parentNode}.push({text: \`${text}\`});`);
if (node.nodeType === 3) {
ctx.addLine(`c${ctx.parentNode}.push({text: \`${text}\`});`);
} else if (node.nodeType === 8) {
ctx.addLine(`c${ctx.parentNode}.push(h('!', \`${text}\`));`);
}
} else if (ctx.parentTextNode) {
ctx.addLine(`vn${ctx.parentTextNode}.text += \`${text}\`;`);
} else {
@@ -569,7 +571,11 @@ export class QWeb extends EventBus {
}
}
_compileGenericNode(node: ChildNode, ctx: CompilationContext, withHandlers: boolean = true): number {
_compileGenericNode(
node: ChildNode,
ctx: CompilationContext,
withHandlers: boolean = true
): number {
// nodeType 1 is generic tag
if (node.nodeType !== 1) {
throw new Error("unsupported node type");