|
|
|
|
| import {
|
| absDependencies,
|
| addDependencies,
|
| create,
|
| divideDependencies,
|
| eDependencies,
|
| evaluateDependencies,
|
| expDependencies,
|
| factorialDependencies,
|
| gcdDependencies,
|
| lcmDependencies,
|
| log1pDependencies,
|
| log2Dependencies,
|
| log10Dependencies,
|
| logDependencies,
|
| modDependencies,
|
| multiplyDependencies,
|
| nthRootDependencies,
|
| piDependencies,
|
| powDependencies,
|
| roundDependencies,
|
| signDependencies,
|
| sqrtDependencies,
|
| subtractDependencies
|
| } from "mathjs/number";
|
| import { Plugin } from "../Plugin.ts";
|
| import { appendAnswerElement } from "../util/appendAnswerElement.ts";
|
| import { getElement } from "../util/getElement.ts";
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| export default class Calculator extends Plugin {
|
| public constructor() {
|
| super("calculator");
|
| }
|
|
|
| |
| |
| |
|
|
| private static readonly math = create({
|
| ...absDependencies,
|
| ...addDependencies,
|
| ...divideDependencies,
|
| ...eDependencies,
|
| ...evaluateDependencies,
|
| ...expDependencies,
|
| ...factorialDependencies,
|
| ...gcdDependencies,
|
| ...lcmDependencies,
|
| ...log10Dependencies,
|
| ...log1pDependencies,
|
| ...log2Dependencies,
|
| ...logDependencies,
|
| ...modDependencies,
|
| ...multiplyDependencies,
|
| ...nthRootDependencies,
|
| ...piDependencies,
|
| ...powDependencies,
|
| ...roundDependencies,
|
| ...signDependencies,
|
| ...sqrtDependencies,
|
| ...subtractDependencies
|
| });
|
|
|
| protected async run(): Promise<string | undefined> {
|
| const searchInput = getElement<HTMLInputElement>("q");
|
| const node = Calculator.math.parse(searchInput.value);
|
|
|
| try {
|
| return `${node.toString()} = ${node.evaluate()}`;
|
| } catch {
|
|
|
| return;
|
| }
|
| }
|
|
|
| protected async post(result: string): Promise<void> {
|
| appendAnswerElement(result);
|
| }
|
| }
|
|
|