UNPKG

simplex-lang

Version:

SimplEx - simple expression language

39 lines (38 loc) 2.16 kB
import { BinaryExpression, ExpressionStatement, Location, LogicalExpression, UnaryExpression } from './simplex-tree.js'; interface ContextHelpers<Data, Globals> { castToBoolean(this: void, val: unknown): boolean; ensureFunction(this: void, val: unknown): Function; getIdentifierValue(this: void, identifierName: string, globals: Globals, data: Data): unknown; getProperty(this: void, obj: unknown, key: unknown): unknown; callFunction(this: void, fn: unknown, args: unknown[] | null): unknown; pipe(this: void, head: unknown, tail: { opt: boolean; next: (topic: unknown) => unknown; }[]): unknown; } type ExpressionUnaryOperators = Record<UnaryExpression['operator'], (val: unknown) => unknown>; export declare const defaultUnaryOperators: ExpressionUnaryOperators; type ExpressionBinaryOperators = Record<BinaryExpression['operator'], (left: unknown, right: unknown) => unknown>; export declare const defaultBinaryOperators: ExpressionBinaryOperators; type LogicalOperatorFunction = (left: () => unknown, right: () => unknown) => unknown; type ExpressionLogicalOperators = Record<LogicalExpression['operator'], LogicalOperatorFunction>; export declare const defaultLogicalOperators: ExpressionLogicalOperators; interface ExpressionOperators { unaryOperators: Record<UnaryExpression['operator'], (val: unknown) => unknown>; binaryOperators: Record<BinaryExpression['operator'], (left: unknown, right: unknown) => unknown>; logicalOperators: Record<LogicalExpression['operator'], (left: () => unknown, right: () => unknown) => unknown>; } export interface SourceLocation { len: number; location: Location; } export interface VisitResult { code: string; offsets: SourceLocation[]; } export declare function traverse(tree: ExpressionStatement): VisitResult; export type CompileOptions<Data, Globals> = Partial<ContextHelpers<Data, Globals> & ExpressionOperators & { globals: Globals; }>; export declare function compile<Data = Record<string, unknown>, Globals = Record<string, unknown>>(expression: string, options?: CompileOptions<Data, Globals>): (data?: Data) => unknown; export {};