zpt
Version:
Zenon Page Templates - JS (ZPT-JS)
75 lines (58 loc) • 1.9 kB
JavaScript
/*
EqualsExpression class
*/
;
var context = require( '../../context.js' );
var ExpressionTokenizer = require( '../expressionTokenizer.js' );
var expressionsUtils = require( '../expressionsUtils.js' );
var EqualsExpression = function( stringToApply, argsToApply ) {
var string = stringToApply;
var args = argsToApply;
var evaluate = function( scope ){
var arg0 = args[ 0 ];
var result0 = arg0.evaluate( scope );
for ( var i = 1; i < args.length; i++ ) {
var arg = args[ i ];
var result = arg.evaluate( scope );
if ( result0 != result ){
return false;
}
}
return true;
};
var dependsOn = function( depsDataItem, scope ){
return expressionsUtils.buildDependsOnList( depsDataItem, scope, args );
};
var toString = function(){
return string;
};
return {
evaluate: evaluate,
dependsOn: dependsOn,
toString: toString
};
};
EqualsExpression.removePrefix = true;
EqualsExpression.getPrefix = function() {
return context.getConf().equalsExpression;
};
EqualsExpression.getId = EqualsExpression.getPrefix;
EqualsExpression.build = function( s ) {
var expressionBuilder = require( '../expressionBuilder.js' );
var string = s.trim();
if ( string.length === 0 ) {
throw 'Equals expression void.';
}
var segments = new ExpressionTokenizer(
string,
context.getConf().expressionDelimiter,
false );
if ( segments.countTokens() === 1 ) {
throw 'Only one element in equals expression "' + string + '", please add at least one more.';
}
return new EqualsExpression(
string,
expressionBuilder.buildList( segments )
);
};
module.exports = EqualsExpression;