UNPKG

zpt

Version:

Zenon Page Templates - JS (ZPT-JS)

63 lines (46 loc) 1.44 kB
/* VariableExpression class */ "use strict"; var context = require( '../../context.js' ); var VariableExpression = function( nameToApply ) { var name = nameToApply; var evaluate = function( scope ){ if ( ! scope.isValidVariable( name ) ){ throw 'Not declared variable found using strict mode:' + name; } return scope.get( name ); }; var dependsOn = function( depsDataItem, scope ){ if ( ! depsDataItem.mustAddVar( name ) ){ return []; } var expression = scope.getVarExpression( name ); if ( ! expression ){ depsDataItem.add1NonExpressionVar( name ); return [ name ]; } depsDataItem.add1ExpressionVar( name ); var result = expression.dependsOn( depsDataItem, scope ); depsDataItem.addAllVars( result, scope ); return result; }; var getVarName = function(){ return name; }; var toString = function(){ return name; }; return { evaluate: evaluate, dependsOn: dependsOn, getVarName: getVarName, toString: toString }; }; VariableExpression.build = function( string ) { return context.getConf().variableNameRE.test( string )? new VariableExpression( string ): undefined; }; module.exports = VariableExpression;