File size: 1,161 Bytes
8c741f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
 * Formula parser
 */
export class Parser<T extends (string | number)> {

    /**
     * Create a new formula parser.
     * 
     * @param formula - the formula string to parse.
     * @param options - optional settings.
     */
    constructor(formula: string, options?: Options);

    /**
     * Evaluate the formula.
     * 
     * @param context - optional object with runtime formula context used to resolve variables.
     * 
     * @returns the string or number outcome of the resolved formula.
     */
    evaluate(context?: any): T;
}


export interface Options {

    /**
     * A hash of key - value pairs used to convert constants to values.
     */
    readonly constants?: Record<string, any>;

    /**
     * A regular expression used to validate token variables.
     */
    readonly tokenRx?: RegExp;

    /**
     * A variable resolver factory function.
     */
    readonly reference?: Options.Reference;

    /**
     * A hash of key-value pairs used to resolve formula functions.
     */
    readonly functions?: Record<string, Function>;
}


export namespace Options {

    type Reference = (name: string) => (context: any) => any;
}