onelang
Version:
OneLang transpiler framework core
41 lines (40 loc) • 1.72 kB
TypeScript
import { ExprLangAst as Ast } from "./ExprLangAst";
export interface IModelHandler {
methodCall(method: any, args: any[], thisObj: object, model: object): any;
memberAccess(obj: object, memberName: string | number, isProperty: boolean): any;
}
export declare class JSModelHandler implements IModelHandler {
static methodCall(method: any, args: any[], thisObj: object, model: object): any;
static memberAccess(obj: object, memberName: string | number, isProperty: boolean): any;
methodCall(method: any, args: any[], thisObj: object, model: object): any;
memberAccess(obj: object, memberName: string | number, isProperty: boolean): any;
}
export declare class VariableSource {
name: string;
vars: {
[varName: string]: any;
};
callbacks: {
[varName: string]: () => any;
};
constructor(name: string);
checkUnique(varName: string, allowOverwrite?: boolean): void;
addCallback(varName: string, callback: () => any): void;
setVariable(varName: string, value: any, allowOverwrite?: boolean): void;
getVariable(varName: string): any;
printAll(): string;
static createSingle(varName: string, value: any, sourceName?: string): VariableSource;
static fromObject(obj: object, sourceName?: string): VariableSource;
}
export declare class VariableContext {
sources: VariableSource[];
constructor(sources?: VariableSource[]);
inherit(...newSources: VariableSource[]): VariableContext;
getVariable(varName: string): any;
printAll(): string;
}
export declare class ExprLangVM {
modelHandler: IModelHandler;
constructor(modelHandler?: IModelHandler);
evaluate(expr: Ast.Expression, vars?: VariableContext): any;
}