From 5831d921ca0528acc4aaa2c4041ed3d826905266 Mon Sep 17 00:00:00 2001 From: CallmeHongmaybe Date: Sat, 18 Feb 2023 10:41:15 +0000 Subject: [PATCH 1/2] Removing zeros from expression. --- apps/javascript-calculator/client/index.jsx | 28 +++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/apps/javascript-calculator/client/index.jsx b/apps/javascript-calculator/client/index.jsx index 61b1ff7e8..52746341f 100644 --- a/apps/javascript-calculator/client/index.jsx +++ b/apps/javascript-calculator/client/index.jsx @@ -54,23 +54,31 @@ class Calculator extends React.Component { handleEvaluate() { if (!this.state.currentVal.includes('Limit')) { let expression = this.state.formula; + let zeroOperationPattern = new RegExp(/[+-]+0/g) + + expression = expression + .replace(/x/g, '*') + .replace(/‑/g, '-') + while (endsWithOperator.test(expression)) { expression = expression.slice(0, -1); } - expression = expression - .replace(/x/g, '*') - .replace(/‑/g, '-') - .replace('--', '+0+0+0+0+0+0+'); - let answer = Math.round(1000000000000 * eval(expression)) / 1000000000000; + + let zeroPatternMatches = expression.match(zeroOperationPattern) + + if (zeroPatternMatches) { + zeroPatternMatches.forEach(match => expression = expression.replace(match, '')) + } + + let answer = eval(expression) this.setState({ currentVal: answer.toString(), formula: expression - .replace(/\*/g, '⋅') - .replace(/-/g, '‑') - .replace('+0+0+0+0+0+0+', '‑-') - .replace(/(x|\/|\+)‑/, '$1-') - .replace(/^‑/, '-') + + .replace(/\*/g, '⋅') + .replace(/-/g, '‑') + .replace(/(x|\/|\+)‑/, '$1-') + .replace(/^‑/, '-') + '=' + answer, prevVal: answer, From 32b3fdd3c84f6a7ce47b70c97a64cc53d79785e1 Mon Sep 17 00:00:00 2001 From: CallmeHongmaybe <44527246+CallmeHongmaybe@users.noreply.github.com> Date: Sun, 19 Mar 2023 11:10:08 +0700 Subject: [PATCH 2/2] Update regex to include decimal cases Such as floats like 0.x in expressions --- apps/javascript-calculator/client/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/javascript-calculator/client/index.jsx b/apps/javascript-calculator/client/index.jsx index 8a4f00acb..84bb55763 100644 --- a/apps/javascript-calculator/client/index.jsx +++ b/apps/javascript-calculator/client/index.jsx @@ -54,7 +54,7 @@ class Calculator extends React.Component { handleEvaluate() { if (!this.state.currentVal.includes('Limit')) { let expression = this.state.formula; - let zeroOperationPattern = new RegExp(/[+-]+0/g) + let zeroOperationPattern = new RegExp(/[+-]+0(?!\.)/g) expression = expression .replace(/x/g, '*')