nerdamer-ts
Version:
javascript light-weight symbolic math expression evaluator
56 lines (55 loc) • 1.63 kB
TypeScript
declare type OperationFunction = (...args: any) => any;
declare type OperatorsDependencies = {
registerOperator: (name: string, operation?: OperationFunction) => void;
};
export declare type OperatorDescriptor = {
precedence: number;
operator: string;
action: string;
prefix: boolean;
postfix: boolean;
leftAssoc: boolean;
operation?: OperationFunction;
overloaded?: boolean;
overloadAction?: string;
overloadLeftAssoc?: boolean;
vectorFn?: string;
value?: any;
};
export declare type Bracket = {
type: string;
id: number;
is_open: boolean;
is_close: boolean;
maps_to?: string;
};
export declare type Brackets = Record<string, Bracket>;
export declare class OperatorDictionary {
private deps;
private operators;
constructor();
injectOperatorsDeps(depsFunction: OperatorsDependencies): void;
brackets: Brackets;
/**
* Replaces nerdamer.setOperator
* @param {object} operator
* @param action
* @param {'over' | 'under'} shift
*/
setOperator(operator: OperatorDescriptor, action?: OperationFunction, shift?: 'over' | 'under'): void;
/**
* Gets an opererator by its symbol
* @param {String} operator
* @returns {OperatorDescriptor}
*/
getOperator(operator: string): OperatorDescriptor;
aliasOperator(o: string, n: string): void;
/**
* Returns the list of operators. Caution! Can break parser!
* @returns {object}
*/
getOperators(): Record<string, OperatorDescriptor>;
getBrackets(): Brackets;
isOperator(name: string): boolean;
}
export {};