diff --git a/packages/csp/src/evaluator.js b/packages/csp/src/evaluator.js index 7a2d2ed30..c0f12be87 100644 --- a/packages/csp/src/evaluator.js +++ b/packages/csp/src/evaluator.js @@ -28,11 +28,18 @@ function generateEvaluator(el, expression, dataStack) { return (receiver = () => {}, { scope = {}, params = [] } = {}) => { let completeScope = mergeProxies([scope, ...dataStack]) - if (completeScope[expression] === undefined) { - throwExpressionError(el, expression) - } - - runIfTypeOfFunction(receiver, completeScope[expression], completeScope, params) + let evaluatedExpression = expression.split('.').reduce( + (currentScope, currentExpression) => { + if (currentScope[currentExpression] === undefined) { + throwExpressionError(el, expression) + } + + return currentScope[currentExpression] + }, + completeScope, + ); + + runIfTypeOfFunction(receiver, evaluatedExpression, completeScope, params) } }