mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[FIX] qweb: enclose interpolated expr in parentheses
Since rev 53e53e9b,
<div class="o_app" t-attf-class="{{ true ? 'o_extra' : '' }}"/>
produced
<div class="o_extra"/>
whereas it should have produced
<div class="o_app o_extra"/>
This is because there were missing parentheses around the string
returned by `interpolate`, which produced instructions like
var _1 = 'o_app ' + true ? 'o_extra' : '';
Fixes #132
This commit is contained in:
committed by
Géry Debongnie
parent
a08deb895d
commit
4d72a4f240
+5
-4
@@ -754,19 +754,20 @@ export class Context {
|
||||
|
||||
/**
|
||||
* Perform string interpolation on the given string. Note that if the whole
|
||||
* string is an expression, it simply returns it (formatted).
|
||||
* string is an expression, it simply returns it (formatted and enclosed in
|
||||
* parentheses).
|
||||
* For instance:
|
||||
* 'Hello {{x}}!' -> `Hello ${x}`
|
||||
* '{{x}}' -> x
|
||||
* '{{x ? 'a': 'b'}}' -> (x ? 'a' : 'b')
|
||||
*/
|
||||
interpolate(s: string): string {
|
||||
let matches = s.match(/\{\{.*?\}\}/g);
|
||||
if (matches && matches[0].length === s.length) {
|
||||
return this.formatExpression(s.slice(2, -2));
|
||||
return `(${this.formatExpression(s.slice(2, -2))})`;
|
||||
}
|
||||
matches = s.match(/\#\{.*?\}/g);
|
||||
if (matches && matches[0].length === s.length) {
|
||||
return this.formatExpression(s.slice(2, -1));
|
||||
return `(${this.formatExpression(s.slice(2, -1))})`;
|
||||
}
|
||||
|
||||
let formatter = expr => "${" + this.formatExpression(expr) + "}";
|
||||
|
||||
Reference in New Issue
Block a user