All files / lib/dynamic-form-expression dynamic-form-expression-helpers.ts

100% Statements 13/13
100% Branches 2/2
100% Functions 6/6
100% Lines 10/10

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        1x     199x 11x 11x 3x 3x 10x   21x         1x 6688x  
import { extendObject } from '../dynamic-form/dynamic-form-helpers';
import { DynamicFormExpression } from './dynamic-form-expression';
import { DynamicFormExpressions } from './dynamic-form-expressions';
 
export const assignExpressions = <Expression extends DynamicFormExpression = DynamicFormExpression>(
  template: any, expressions: DynamicFormExpressions<Expression>,
): void => {
  Object.keys(expressions).forEach(path => {
    const paths = path.split('.');
    if (paths.length > 1) {
      const key = paths.splice(paths.length - 1, 1)[0];
      const obj = extendObject(template, paths);
      Object.defineProperty(obj, key, { get: () => expressions[path].value });
    } else {
      Object.defineProperty(template, path, { get: () => expressions[path].value });
    }
  });
};
 
export const assignExpressionData = (data: any, expressions: { [key: string]: () => any }): void =>
  Object.keys(expressions).forEach(key => Object.defineProperty(data, key, { get: expressions[key] }));