mframejs
Version:
simple framework
83 lines (57 loc) • 2.74 kB
text/typescript
import { traverseAST, valueConvert, getBehavior } from './ast/traverseAst';
import { tokenize } from './ast/tokenize';
import { generateAST } from './ast/generateAst';
import { ITokens, IBindingContext } from '../interface/exported';
import { createBindingExpression } from './createBindingExpression';
import { setValue } from './setValue';
import { subscribeClassProperty } from './property/subscribeClassProperty';
import { unSubscribeClassProperty } from './property/unSubscribeClassProperty';
import { evaluateExpression } from './evaluateExpression';
import { subscribeClassArray } from './array/subscribeClassArray';
import { unSubscribeClassArray } from './array/unSubscribeClassArray';
import { unSubscribeClassMetaBinding } from './unSubscribeClassMetaBinding';
import { subscribeClassMetaBinding } from './subscribeClassMetaBinding';
import { Cache } from '../utils/exported';
/**
* Common class to export all internal functions so its easier to use
*
*/
export class BindingEngine {
/**
* all in one
*
*/
public static tokenizeParseAndTraverseAST(expression: string, context: IBindingContext) {
let ast: any;
if (Cache.expressionMap.has(expression)) {
const cacheX = Cache.expressionMap.get(expression);
ast = (<any>cacheX).ast;
} else {
const tokens: ITokens[] = tokenize(expression);
ast = generateAST(tokens);
}
return traverseAST(ast, context);
}
public static printTokensAndAST(expression: string, context: IBindingContext) {
const tokens: ITokens[] = tokenize(expression);
const ast = generateAST(tokens);
const result = traverseAST(ast, context);
console.log('tokens:', tokens);
console.log('ast:', ast);
console.log('result:', result);
}
public static tokenize = tokenize;
public static traverseAST = traverseAST;
public static generateAST = generateAST;
public static valueConvert = valueConvert;
public static getBehavior = getBehavior;
public static createBindingExpression = createBindingExpression;
public static setValue = setValue;
public static subscribeClassProperty = subscribeClassProperty;
public static unSubscribeClassProperty = unSubscribeClassProperty;
public static evaluateExpression = evaluateExpression;
public static subscribeClassArray = subscribeClassArray;
public static unSubscribeClassArray = unSubscribeClassArray;
public static unSubscribeClassMetaBinding = unSubscribeClassMetaBinding;
public static subscribeClassMetaBinding = subscribeClassMetaBinding;
}