From 9f9105b67fc95bf649e38937c27ba347c0af804c Mon Sep 17 00:00:00 2001 From: Pierre Chiquet Date: Thu, 8 Jun 2023 13:46:56 +0200 Subject: [PATCH 1/3] Add tests with negative numbers --- test/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/index.js b/test/index.js index 2f4fa96..caec54d 100644 --- a/test/index.js +++ b/test/index.js @@ -179,6 +179,12 @@ describe('Testing Unit', function () { it('checks + precedence before number insise parenthesis ', function () { assert.equal(mexp.eval('(-2)'), '-2') }) + it('dividing by negative number ', function () { + assert.equal(mexp.eval('2/-2'), '-1') + }) + it('multiplying by negative number ', function () { + assert.equal(mexp.eval('2*-2'), '-4') + }) it('checks multiple allowable operator', function () { assert.equal(mexp.eval('2+++-++-+-+3'), '-1') assert.equal(mexp.eval('2*+3'), '6') From e1463fd6e4bab028fff3481275205c3dabe814a1 Mon Sep 17 00:00:00 2001 From: Pierre Chiquet Date: Thu, 8 Jun 2023 15:09:06 +0200 Subject: [PATCH 2/3] fix: adjust precedence for "-" (issue #77) --- src/lexer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lexer.ts b/src/lexer.ts index 149dcc6..ad74fe0 100644 --- a/src/lexer.ts +++ b/src/lexer.ts @@ -190,7 +190,7 @@ export const lex = function (this: Mexp, inp: string, tokens: Token[]) { var changeSignObj: ParsedToken = { value: this.math.changeSign, type: 0, - precedence: 1, + precedence: 4, show: '-', } var closingParObj: ParsedToken = { From 956c128abb378ec0910ba733650ca6b533b97a3b Mon Sep 17 00:00:00 2001 From: Pierre Chiquet Date: Thu, 8 Jun 2023 15:25:32 +0200 Subject: [PATCH 3/3] npm run build --- dist/browser/math-expression-evaluator.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/browser/math-expression-evaluator.min.js b/dist/browser/math-expression-evaluator.min.js index d6b0a01..a3408d8 100644 --- a/dist/browser/math-expression-evaluator.min.js +++ b/dist/browser/math-expression-evaluator.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Mexp=t()}(this,(function(){"use strict";function e(){return e=Object.assign?Object.assign.bind():function(e){for(var t=1;ti.length-2?i.length-1:t.length-u;a>0;a--)if(void 0!==i[a])for(o=0;o0&&nh)u.push(t);else{for(;h>=r&&!l||l&&r1)throw new Error("Uncaught Syntax error");return parseFloat(h[0].value.toFixed(15))}var m=function(){function t(){var t;this.toPostfix=c,this.addToken=v,this.lex=y,this.postfixEval=w,this.math=(t=this,{isDegree:!0,acos:function(e){return t.math.isDegree?180/Math.PI*Math.acos(e):Math.acos(e)},add:function(e,t){return e+t},asin:function(e){return t.math.isDegree?180/Math.PI*Math.asin(e):Math.asin(e)},atan:function(e){return t.math.isDegree?180/Math.PI*Math.atan(e):Math.atan(e)},acosh:function(e){return Math.log(e+Math.sqrt(e*e-1))},asinh:function(e){return Math.log(e+Math.sqrt(e*e+1))},atanh:function(e){return Math.log((1+e)/(1-e))},C:function(e,n){var a=1,o=e-n,h=n;hi.length-2?i.length-1:t.length-u;a>0;a--)if(void 0!==i[a])for(o=0;o0&&nh)u.push(t);else{for(;h>=r&&!l||l&&r1)throw new Error("Uncaught Syntax error");return parseFloat(h[0].value.toFixed(15))}var m=function(){function t(){var t;this.toPostfix=c,this.addToken=v,this.lex=y,this.postfixEval=w,this.math=(t=this,{isDegree:!0,acos:function(e){return t.math.isDegree?180/Math.PI*Math.acos(e):Math.acos(e)},add:function(e,t){return e+t},asin:function(e){return t.math.isDegree?180/Math.PI*Math.asin(e):Math.asin(e)},atan:function(e){return t.math.isDegree?180/Math.PI*Math.atan(e):Math.atan(e)},acosh:function(e){return Math.log(e+Math.sqrt(e*e-1))},asinh:function(e){return Math.log(e+Math.sqrt(e*e+1))},atanh:function(e){return Math.log((1+e)/(1-e))},C:function(e,n){var a=1,o=e-n,h=n;h