UNPKG

zpt

Version:

Zenon Page Templates - JS (ZPT-JS)

52 lines (38 loc) 1.35 kB
/* MethodExpression class */ import { evaluateHelper } from '../evaluateHelper.js'; import { expressionBuilder } from '../expressionBuilder.js'; export const MethodExpression = function( stringToApply, nameToApply, argsToApply ) { var string = stringToApply; var name = nameToApply; var args = argsToApply; var evaluate = function( scope, parent ){ var evaluatedArgs = evaluateHelper.evaluateExpressionList( args, scope ); return parent[ name ].apply( parent, evaluatedArgs ); }; var dependsOn = function(){ return undefined; }; var toString = function(){ return string; }; return { evaluate: evaluate, dependsOn: dependsOn, toString: toString }; }; MethodExpression.build = function( string ) { var leftParent = string.indexOf( '(' ); if ( leftParent === -1 ) { return undefined; } if ( ! expressionBuilder.endsWith( string, ')' ) ) { throw 'Syntax error. Bad method call: ' + string; } var methodName = string.substring( 0, leftParent ).trim(); var argsString = string.substring( leftParent + 1, string.length - 1 ); var args = expressionBuilder.getArgumentsFromString( argsString ); return new MethodExpression( string, methodName, args ); };