2021-09-16 01:50:44 +02:00
|
|
|
import { ITerminal } from "../ITerminal";
|
2021-09-17 08:58:02 +02:00
|
|
|
import { IRouter } from "../../ui/Router";
|
2021-09-16 01:50:44 +02:00
|
|
|
import { IPlayer } from "../../PersonObjects/IPlayer";
|
|
|
|
import { BaseServer } from "../../Server/BaseServer";
|
|
|
|
|
|
|
|
export function expr(
|
|
|
|
terminal: ITerminal,
|
2021-09-17 08:58:02 +02:00
|
|
|
router: IRouter,
|
2021-09-16 01:50:44 +02:00
|
|
|
player: IPlayer,
|
|
|
|
server: BaseServer,
|
2021-12-03 20:44:32 +01:00
|
|
|
args: (string | number | boolean)[],
|
2021-09-16 01:50:44 +02:00
|
|
|
): void {
|
|
|
|
if (args.length === 0) {
|
|
|
|
terminal.error("Incorrect usage of expr command. Usage: expr [math expression]");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const expr = args.join("");
|
|
|
|
|
|
|
|
// Sanitize the math expression
|
|
|
|
const sanitizedExpr = expr.replace(/s+/g, "").replace(/[^-()\d/*+.]/g, "");
|
|
|
|
let result;
|
|
|
|
try {
|
|
|
|
result = eval(sanitizedExpr);
|
|
|
|
} catch (e) {
|
|
|
|
terminal.error(`Could not evaluate expression: ${sanitizedExpr}`);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
terminal.print(result);
|
|
|
|
}
|