Skip to content

Commit 86b7824

Browse files
author
Marek Sierociński
committed
fix: Logical operators
1 parent 22d783b commit 86b7824

File tree

6 files changed

+38
-20
lines changed

6 files changed

+38
-20
lines changed

dist/meval.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* meval v1.0.1 | Copyright 2020 (c) Marek Sierociński| https://github.com/marverix/meval/blob/master/LICENSE */
1+
/* meval v1.0.2 | Copyright 2020 (c) Marek Sierociński| https://github.com/marverix/meval/blob/master/LICENSE */
22
(function (global, factory) {
33
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
44
typeof define === 'function' && define.amd ? define(factory) :
@@ -834,15 +834,19 @@
834834
_createClass(MemberAccessOperator, [{
835835
key: "_execute",
836836
value: function _execute(leftSide, rightSide, context) {
837-
leftSide = this.resolveSide(leftSide, context);
838-
rightSide = this.resolveSide(rightSide, false);
839-
var result = leftSide[rightSide];
837+
try {
838+
leftSide = this.resolveSide(leftSide, context);
839+
rightSide = this.resolveSide(rightSide, false);
840+
var result = leftSide[rightSide];
840841

841-
if (typeof result === 'function') {
842-
result = result.bind(leftSide);
843-
}
842+
if (typeof result === 'function') {
843+
result = result.bind(leftSide);
844+
}
844845

845-
return result;
846+
return result;
847+
} catch (e) {
848+
return e;
849+
}
846850
}
847851
}]);
848852

dist/meval.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "meval",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "Mimic eval in given context",
55
"main": "dist/meval.js",
66
"scripts": {

src/operators/MemberAccess.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ class MemberAccessOperator extends Abstract2ArgOperator {
99
}
1010

1111
_execute (leftSide, rightSide, context) {
12-
leftSide = this.resolveSide(leftSide, context);
13-
rightSide = this.resolveSide(rightSide, false);
14-
15-
let result = leftSide[rightSide];
16-
if (typeof result === 'function') {
17-
result = result.bind(leftSide);
12+
try {
13+
leftSide = this.resolveSide(leftSide, context);
14+
rightSide = this.resolveSide(rightSide, false);
15+
16+
let result = leftSide[rightSide];
17+
if (typeof result === 'function') {
18+
result = result.bind(leftSide);
19+
}
20+
21+
return result;
22+
} catch (e) {
23+
return e;
1824
}
19-
20-
return result;
2125
}
2226

2327
}

test/test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,11 @@ describe('meval', function() {
376376
var ret = meval('false && false', testContext);
377377
expect(ret).to.be.false;
378378
});
379+
380+
it('Should not check right side', function() {
381+
var ret = meval('false && item.x.notExisting', testContext);
382+
expect(ret).to.be.false;
383+
});
379384
});
380385

381386
describe('Test 2 argument operator: ||', function() {
@@ -398,6 +403,11 @@ describe('meval', function() {
398403
var ret = meval('false || false', testContext);
399404
expect(ret).to.be.false;
400405
});
406+
407+
it('Should not check right side', function() {
408+
var ret = meval('true || item.x.notExisting', testContext);
409+
expect(ret).to.be.true;
410+
});
401411
});
402412

403413
describe('Test mixing 2 argument operators', function() {

0 commit comments

Comments
 (0)