Fix template condition evaluating to true for empty string from function
Fixes #2529
This commit is contained in:
parent
be0b0a7151
commit
2af7275968
2 changed files with 14 additions and 4 deletions
|
@ -2230,11 +2230,20 @@ Zotero.Utilities.Internal = {
|
||||||
if (!level.executed) {
|
if (!level.executed) {
|
||||||
level.condition = level.parentCondition && (
|
level.condition = level.parentCondition && (
|
||||||
args[2]
|
args[2]
|
||||||
|
// If string variable is equal to the provided string
|
||||||
? vars[args[0]].toLowerCase() == args[2].toLowerCase()
|
? vars[args[0]].toLowerCase() == args[2].toLowerCase()
|
||||||
: (
|
: (
|
||||||
Array.isArray(vars[args[0]])
|
Array.isArray(vars[args[0]])
|
||||||
|
// Is array non empty
|
||||||
? !!vars[args[0]].length
|
? !!vars[args[0]].length
|
||||||
: !!vars[args[0]]
|
: (
|
||||||
|
typeof vars[args[0]] === 'function'
|
||||||
|
// If function returns a value (only string is supported)
|
||||||
|
// Note: To keep things simple, this doesn't support function attributes
|
||||||
|
? !!vars[args[0]]()
|
||||||
|
// If string variable exists
|
||||||
|
: !!vars[args[0]]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
level.executed = level.condition;
|
level.executed = level.condition;
|
||||||
|
|
|
@ -528,13 +528,14 @@ describe("Zotero.Utilities.Internal", function () {
|
||||||
var vars = {
|
var vars = {
|
||||||
v1: '1',
|
v1: '1',
|
||||||
v2: (pars) => pars.a1 + pars.a2 + pars.a3,
|
v2: (pars) => pars.a1 + pars.a2 + pars.a3,
|
||||||
v3: () => undefined,
|
v3: () => '',
|
||||||
|
v5: () => 'something',
|
||||||
ar1: [],
|
ar1: [],
|
||||||
ar2: [1, 2]
|
ar2: [1, 2]
|
||||||
};
|
};
|
||||||
var template = `{{ v1}}{{v2 a1= 1 a2 =' 2' a3 = "3 "}}{{v3}}{{v4}}{{if ar1}}ar1{{endif}}{{if ar2}}{{ar2}}{{endif}}`;
|
var template = `{{ v1}}{{v2 a1= 1 a2 =' 2' a3 = "3 "}}{{v3}}{{v4}}{{if ar1}}ar1{{endif}}{{if ar2}}{{ar2}}{{endif}}{{if v5}}yes{{endif}}{{if v3}}no{{endif}}`;
|
||||||
var html = Zotero.Utilities.Internal.generateHTMLFromTemplate(template, vars);
|
var html = Zotero.Utilities.Internal.generateHTMLFromTemplate(template, vars);
|
||||||
assert.equal(html, '11 23 1,2');
|
assert.equal(html, '11 23 1,2yes');
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should support nested 'if' statements", function () {
|
it("should support nested 'if' statements", function () {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue