imp: update owl library

This commit is contained in:
Géry Debongnie
2019-04-02 13:40:57 +02:00
parent ae48157985
commit ff607315de
+18 -9
View File
@@ -1199,7 +1199,7 @@
// Compilation Context // Compilation Context
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
class Context { class Context {
constructor() { constructor(name) {
this.nextID = 1; this.nextID = 1;
this.code = []; this.code = [];
this.variables = {}; this.variables = {};
@@ -1212,6 +1212,7 @@
this.inLoop = false; this.inLoop = false;
this.inPreTag = false; this.inPreTag = false;
this.rootContext = this; this.rootContext = this;
this.templateName = name || "noname";
this.addLine("let h = this.utils.h;"); this.addLine("let h = this.utils.h;");
} }
generateID() { generateID() {
@@ -1464,7 +1465,7 @@
} }
const mainNode = this.processedTemplates[name]; const mainNode = this.processedTemplates[name];
const isDebug = mainNode.attributes.hasOwnProperty("t-debug"); const isDebug = mainNode.attributes.hasOwnProperty("t-debug");
const ctx = new Context(); const ctx = new Context(name);
this._compileNode(mainNode, ctx); this._compileNode(mainNode, ctx);
if (ctx.shouldProtectContext) { if (ctx.shouldProtectContext) {
ctx.code.unshift(" context = Object.create(context);"); ctx.code.unshift(" context = Object.create(context);");
@@ -1486,7 +1487,7 @@
template = new Function("context", "extra", ctx.code.join("\n")); template = new Function("context", "extra", ctx.code.join("\n"));
} }
catch (e) { catch (e) {
throw new Error(`Invalid template (or compiled code): ${e.message}`); throw new Error(`Invalid generated code while compiling template '${ctx.templateName.replace(/`/g, "'")}': ${e.message}`);
} }
if (isDebug) { if (isDebug) {
console.log(`Template: ${this.processedTemplates[name].outerHTML}\nCompiled code:\n` + template.toString()); console.log(`Template: ${this.processedTemplates[name].outerHTML}\nCompiled code:\n` + template.toString());
@@ -1616,7 +1617,8 @@
let name = attributes[i].name; let name = attributes[i].name;
const value = attributes[i].textContent; const value = attributes[i].textContent;
// regular attributes // regular attributes
if (!name.startsWith("t-")) { if (!name.startsWith("t-") &&
!node.getAttribute("t-attf-" + name)) {
const attID = ctx.generateID(); const attID = ctx.generateID();
ctx.addLine(`let _${attID} = '${value}';`); ctx.addLine(`let _${attID} = '${value}';`);
if (!name.match(/^[a-zA-Z]+$/)) { if (!name.match(/^[a-zA-Z]+$/)) {
@@ -1661,7 +1663,13 @@
} }
const formattedExpr = value.replace(/\{\{.*?\}\}/g, s => "${" + ctx.formatExpression(s.slice(2, -2)) + "}"); const formattedExpr = value.replace(/\{\{.*?\}\}/g, s => "${" + ctx.formatExpression(s.slice(2, -2)) + "}");
const attID = ctx.generateID(); const attID = ctx.generateID();
ctx.addLine(`let _${attID} = \`${formattedExpr}\`;`); let staticVal = node.getAttribute(attName);
if (staticVal) {
ctx.addLine(`let _${attID} = '${staticVal} ' + \`${formattedExpr}\`;`);
}
else {
ctx.addLine(`let _${attID} = \`${formattedExpr}\`;`);
}
attrs.push(`${attName}: _${attID}`); attrs.push(`${attName}: _${attID}`);
} }
// t-att= attributes // t-att= attributes
@@ -1893,11 +1901,12 @@
extraArgs = args.slice(1, -1); extraArgs = args.slice(1, -1);
return ""; return "";
}); });
let error = `(function () {throw new Error('Missing handler \\'' + '${handler}' + \`\\' when evaluating template '${ctx.templateName.replace(/`/g, "'")}'\`)})()`;
if (extraArgs) { if (extraArgs) {
ctx.addLine(`p${nodeID}.on['${eventName}'] = context['${handler}'].bind(owner, ${ctx.formatExpression(extraArgs)});`); ctx.addLine(`p${nodeID}.on['${eventName}'] = (context['${handler}'] || ${error}).bind(owner, ${ctx.formatExpression(extraArgs)});`);
} }
else { else {
ctx.addLine(`extra.handlers['${eventName}' + ${nodeID}] = extra.handlers['${eventName}' + ${nodeID}] || context['${handler}'].bind(owner);`); ctx.addLine(`extra.handlers['${eventName}' + ${nodeID}] = extra.handlers['${eventName}' + ${nodeID}] || (context['${handler}'] || ${error}).bind(owner);`);
ctx.addLine(`p${nodeID}.on['${eventName}'] = extra.handlers['${eventName}' + ${nodeID}];`); ctx.addLine(`p${nodeID}.on['${eventName}'] = extra.handlers['${eventName}' + ${nodeID}];`);
} }
} }
@@ -2134,7 +2143,7 @@
exports.extras = extras; exports.extras = extras;
exports._version = '0.4.0'; exports._version = '0.4.0';
exports._date = '2019-04-01T14:01:57.709Z'; exports._date = '2019-04-02T11:40:29.730Z';
exports._hash = '990a08d'; exports._hash = '15f973c';
}(this.owl = this.owl || {})); }(this.owl = this.owl || {}));