zpt
Version:
Zenon Page Templates - JS (ZPT-JS)
85 lines (62 loc) • 2.36 kB
JavaScript
/*
expressionsUtils singleton class
*/
import { evaluateHelper } from './evaluateHelper.js';
import { utils } from '../utils.js';
import { DepsDataItem } from '../parsers/depsDataItem.js';
export const expressionsUtils = (function() {
var buildLiteral = function( value ) {
return evaluateHelper.isNumber( value )? "" + value: "'" + value + "'";
};
var buildList = function( items, asStrings ) {
var result = '[';
var separator = asStrings? "'": "";
for ( var i = 0; i < items.length; i++ ) {
result += separator + items[ i ] + separator + " ";
}
result += ']';
return result;
};
var buildDependsOnList = function(){
var result = [];
var depsDataItem = arguments[ 0 ];
if ( ! depsDataItem ){
depsDataItem = new DepsDataItem();
}
var scope = arguments[ 1 ];
for ( var argCounter = 2; argCounter < arguments.length; argCounter++ ){
var list = arguments[ argCounter ];
result = result.concat(
getDependsOnFromList( depsDataItem, scope, list )
);
}
return result;
};
var getDependsOnFromList = function( depsDataItem, scope, arg ){
var result = [];
if ( ! arg ){
return result;
}
if ( ! Array.isArray( arg ) ){
return getDependsOnFromNonList( depsDataItem, scope, arg );
}
var list = arg;
for ( var i = 0; i < list.length; i++ ) {
var item = list[ i ];
result = result.concat(
Array.isArray( item )? getDependsOnFromList( scope, item ): getDependsOnFromNonList( depsDataItem, scope, item )
);
}
return result;
};
var getDependsOnFromNonList = function( depsDataItem, scope, item ){
return ! utils.isFunction( item.dependsOn ) || ( utils.isFunction( item.getVarName ) && depsDataItem === item.getVarName() )?
[]:
item.dependsOn( depsDataItem, scope );
};
return {
buildLiteral: buildLiteral,
buildList: buildList,
buildDependsOnList: buildDependsOnList
};
})();