mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[FIX] qweb: remove comments in xml strings before parsing
It was done in loadTemplates, but this does not work if we want to add templates from another source.
This commit is contained in:
@@ -98,6 +98,9 @@ const UTILS: Utils = {
|
|||||||
|
|
||||||
function parseXML(xml: string): Document {
|
function parseXML(xml: string): Document {
|
||||||
const parser = new DOMParser();
|
const parser = new DOMParser();
|
||||||
|
|
||||||
|
// we remove comments from the xml string
|
||||||
|
xml = xml.replace(/<!--[\s\S]*?-->/g, "");
|
||||||
const doc = parser.parseFromString(xml, "text/xml");
|
const doc = parser.parseFromString(xml, "text/xml");
|
||||||
if (doc.getElementsByTagName("parsererror").length) {
|
if (doc.getElementsByTagName("parsererror").length) {
|
||||||
let msg = "Invalid XML in template.";
|
let msg = "Invalid XML in template.";
|
||||||
|
|||||||
+1
-3
@@ -48,9 +48,7 @@ export async function loadTemplates(url: string): Promise<string> {
|
|||||||
if (!result.ok) {
|
if (!result.ok) {
|
||||||
throw new Error("Error while fetching xml templates");
|
throw new Error("Error while fetching xml templates");
|
||||||
}
|
}
|
||||||
let templates = await result.text();
|
return await result.text();
|
||||||
templates = templates.replace(/<!--[\s\S]*?-->/g, "");
|
|
||||||
return templates;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function escape(str: string | number | undefined): string {
|
export function escape(str: string | number | undefined): string {
|
||||||
|
|||||||
@@ -768,6 +768,18 @@ exports[`static templates empty div 1`] = `
|
|||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`static templates ignore comments 1`] = `
|
||||||
|
"function anonymous(context,extra
|
||||||
|
) {
|
||||||
|
var h = this.h;
|
||||||
|
let c1 = [], p1 = {key:1};
|
||||||
|
var vn1 = h('div', p1, c1);
|
||||||
|
result = vn1;
|
||||||
|
c1.push({text: \`hello owl\`});
|
||||||
|
return vn1;
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`static templates simple dynamic value 1`] = `
|
exports[`static templates simple dynamic value 1`] = `
|
||||||
"function anonymous(context,extra
|
"function anonymous(context,extra
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -49,6 +49,12 @@ describe("static templates", () => {
|
|||||||
qweb.addTemplate("test", "<div><span>word</span></div>");
|
qweb.addTemplate("test", "<div><span>word</span></div>");
|
||||||
expect(renderToString(qweb, "test")).toBe("<div><span>word</span></div>");
|
expect(renderToString(qweb, "test")).toBe("<div><span>word</span></div>");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("ignore comments", () => {
|
||||||
|
qweb.addTemplate("test", "<div>hello <!-- comment-->owl</div>");
|
||||||
|
expect(renderToString(qweb, "test")).toBe("<div>hello owl</div>");
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("error handling", () => {
|
describe("error handling", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user