-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcalculator.js
More file actions
30 lines (26 loc) · 868 Bytes
/
calculator.js
File metadata and controls
30 lines (26 loc) · 868 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import fs from "fs";
// Import safe-eval
import safeEval from "safe-eval";
export default function calculator_callback(request, response) {
const expression = request.query?.expressionChooser;
let content = "";
if (expression) {
try {
content = fs.readFileSync("public/calculator.html", "utf8");
// Replace eval with safe-eval;
const answer = safeEval(expression);
content = content.replace(">", "> " + answer)
response.send(content);
} catch (e) {
content = content.replace(">", "> " + e)
response.send(content);
}
} else {
try {
content = fs.readFileSync("public/calculator.html", "utf8");
} catch (e) {
console.log("Error:", e.stack);
}
response.send(content);
}
}