Skip to content

Commit 30d8d93

Browse files
committed
feat(JS) create handleNumberButton()
1 parent 4a95ab5 commit 30d8d93

File tree

1 file changed

+45
-63
lines changed

1 file changed

+45
-63
lines changed

index.js

Lines changed: 45 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -22,59 +22,40 @@ btns.forEach((btn) => {
2222

2323
handlingZeroFollowedByAdecimal(buttonValue);
2424

25-
removesDecimalPointIfPrecededByAnOperator(buttonValue)
26-
27-
28-
29-
30-
31-
32-
33-
34-
if (!isNaN(Number(buttonValue))) {
35-
screen.innerText = buttonValue;
36-
data.push(screen.innerText);
37-
screen.innerText = data.join("");
38-
}
39-
40-
41-
42-
43-
44-
45-
46-
function userClicksOnEqualButton(button) {
47-
if (button === "=") {
48-
try {
49-
const replacedArray = data.map((item) => item === "x" ? "*" : item === "÷" ? "/" : item);
50-
// Check if the expression involves 0/0
51-
// if (areYouDivindingByZero(replacedArray)) {
52-
// screen.innerText = "You cannot divide by zero. Press AC";
53-
// }
54-
55-
if (areYouDividingdZeroByZero(replacedArray)) {
56-
screen.innerText = "0÷0 is an invalid format. Press AC";
57-
} else {
58-
let result = eval(replacedArray.join(""));
59-
console.log(result);
60-
displayResult(replacedArray, result);
61-
screen.innerText =
62-
result === Infinity
63-
? "You cannot divide by zero. Press AC"
64-
: result;
65-
// divideByZero(screen, result);
66-
data = [];
67-
data.push(result);
25+
removesDecimalPointIfPrecededByAnOperator(buttonValue);
26+
27+
handleNumberButton(buttonValue);
28+
29+
function userClicksOnEqualButton(button) {
30+
if (button === "=") {
31+
try {
32+
const replacedArray = data.map((item) =>
33+
item === "x" ? "*" : item === "÷" ? "/" : item
34+
);
35+
// Check if the expression involves 0/0
36+
// if (areYouDivindingByZero(replacedArray)) {
37+
// screen.innerText = "You cannot divide by zero. Press AC";
38+
// }
39+
40+
if (areYouDividingdZeroByZero(replacedArray)) {
41+
screen.innerText = "0÷0 is an invalid format. Press AC";
42+
} else {
43+
let result = eval(replacedArray.join(""));
44+
console.log(result);
45+
displayResult(replacedArray, result);
46+
screen.innerText =
47+
result === Infinity
48+
? "You cannot divide by zero. Press AC"
49+
: result;
50+
// divideByZero(screen, result);
51+
data = [];
52+
data.push(result);
53+
}
54+
} catch (e) {
55+
screen.innerText = `${e.name} press AC`;
56+
}
6857
}
69-
} catch (e) {
70-
screen.innerText = `${e.name} press AC`;
7158
}
72-
}
73-
74-
}
75-
76-
77-
7859

7960
function areYouDivindingByZero(array) {
8061
for (let i = 0; i < array.length - 2; i++) {
@@ -115,7 +96,6 @@ function userClicksOnEqualButton(button) {
11596

11697
// end of forEach() statement
11798

118-
11999
function deteLastEntry() {
120100
let newArray = data.slice(0, -1);
121101
screen.innerText = newArray.join("");
@@ -126,7 +106,7 @@ function deteLastEntry() {
126106
}
127107

128108
function canUserAddDot(button) {
129-
if(button === ".") {
109+
if (button === ".") {
130110
var dotAllowed = true;
131111
for (var i = data.length - 1; i >= 0; i--) {
132112
console.log("data > " + data[i]);
@@ -158,17 +138,17 @@ function deleteEverythingFromScreen(button) {
158138
}
159139

160140
function toggleSign(button) {
161-
if(button === "minus") {
141+
if (button === "minus") {
162142
let currentExpression = data.join("");
163143
let reversedExpression = currentExpression.split("").join("");
164144
let match = reversedExpression.match(/(\d+(\.\d+)?)|(\D+)/); // Match a number or non-digit
165145
// debugger
166-
146+
167147
if (match) {
168148
let start = currentExpression.length - match[0].length;
169149
let end = currentExpression.length;
170150
let currentValue = Number(match[0]);
171-
151+
172152
if (!isNaN(currentValue)) {
173153
// If it's a number, toggle its sign
174154
currentValue = -currentValue;
@@ -178,9 +158,7 @@ function toggleSign(button) {
178158
screen.innerText = data.join("");
179159
}
180160
}
181-
182161
}
183-
184162
}
185163

186164
function insertOpeningParenthesis(button) {
@@ -224,13 +202,17 @@ function removesDecimalPointIfPrecededByAnOperator(button) {
224202
if (data.slice(-1)[0] === ".") {
225203
data.pop();
226204
}
227-
button === "*"
228-
? (button = "x")
229-
: button === "/"
230-
? (button = "÷")
231-
: button;
205+
button === "*" ? (button = "x") : button === "/" ? (button = "÷") : button;
232206

233207
data.push(button);
234208
screen.innerText = data.join("");
235209
}
236210
}
211+
212+
function handleNumberButton(button) {
213+
if (!isNaN(Number(button))) {
214+
screen.innerText = button;
215+
data.push(screen.innerText);
216+
screen.innerText = data.join("");
217+
}
218+
}

0 commit comments

Comments
 (0)