All files / mframejs/binding bindingEngine.ts

84.62% Statements 33/39
100% Branches 0/0
50% Functions 1/2
84.62% Lines 33/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8329x 29x 29x     29x 29x 29x 29x 29x 29x 29x 29x 29x   29x           29x                     5x 5x   177x 177x     182x                         29x   29x   29x   29x   29x   29x   29x   29x   29x   29x   29x   29x   29x   29x        
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;
 
 
}