UNPKG

sbis3-node-ws

Version:

Модуль позволяет использовать ядро интерфейсного фреймворка sbis3-ws(`core.js`) и модуль работы с данными (`Source.js`) в приложении на nodejs.

164 lines 5.38 kB
define('js!Core/tmpl/js/helpers/entityHelpers', ['js!Core/tmpl/js/helpers/utils', 'js!Core/tmpl/js/helpers/processExpressions'], function entityHelpersLoader(utils, processExpressions) { 'use strict'; /** * Helpers for entities of template engines * */ var entityHelpers = { /** * is entity - tag * @param {String} type * @return {Boolean} */ isTag: function isTag(type) { return type === 'tag' || type === 'style'; }, /** * is entity - text * @param {String} type * @return {Boolean} */ isText: function isText(type) { return type === 'text'; }, isControl: function isText(type) { return type === 'control'; }, isControlClass: function isControlClass(controlClass) { if (controlClass && controlClass.prototype) { return controlClass.prototype.$constructor && controlClass.prototype.superclass; } return false; }, isFunction: function isFunction(fn) { return Object.prototype.toString.call(fn) === '[object Function]'; }, /** * Match module by name * @param {Object} tag * @return {Function} */ parserMatcher: function parserMatcher(tag) { return (this._modules[tag.name] !== undefined) ? this._modules[tag.name].parse : false; }, /** * Match module by name * @param {Object} name * @return {Function} */ attributeMatcherByName: function attributeParserName(name) { return (name !== undefined) ? this._attributeModules[name].parse : false; }, attributeParserMatcherByName: function attributeParserMatcherByName(name) { return (name !== undefined) ? this._attributeModules[name].module : false; }, /** * Match parse by name * @param {Object} tag * @return {Function} */ moduleMatcher: function moduleMatcher(tag) { var moduleName = utils.splitWs(tag.name); return (this._modules[moduleName] !== undefined) ? this._modules[moduleName].module : false; }, /** * Load module and execute function * @param {Function} moduleFunction * @param {Object} tag * @param {Object} data * @return {Array} */ loadModuleFunction: function loadModuleFunction(moduleFunction, tag, data) { var tagModule = moduleFunction(tag, data); return tagModule.call(this); }, isTagRequirable: function isTagRequreable(name) { var wsName = utils.splitWs(name); if (wsName) { return utils.isUpperCase(utils.getFirstLetter(wsName)); } return false; }, isTagRequirableBool: function isTagRequreableBool(name) { return utils.isUpperCase(utils.getFirstLetter(name)); }, /** * is expression * @param {String} string * @return {Boolean} */ isExpression: function isExpression(string) { return string.split('?').length > 1; }, createControlNode: function createControlNode(fn, key) { return { type: 'control', key: key, fn: fn } }, /** * Create data request * @param name * @returns {{type: string, name: *}} */ createDataRequest: function createDataRequest(name) { return { type: 'request', name: name }; }, /** * Create data object for variable * @param {String} name lexical name of variable * @param {Undefined} value * @return {Object} data object */ createDataVar: function createDataVar(name, value) { return { type: 'var', name: name, value: value }; }, /** * Creating text chuncks * @param {String} value * @return {Object} Object */ createDataText: function createDataText(value) { return { type: 'text', value: value }; }, createNumberFromString: function createNumberFromString(value) { return Number(value); }, parseAttributesForData: function parseAttributesForData(attrs, data) { var attr, obj = {}; function processDataSequence(attributesData, data) { var string = '', attrData = attributesData.data, i; if (attrData.length) { if (attrData.length === 1) { return processExpressions(attrData[0], data, this.calculators, this.filename); } for (i = 0; i < attrData.length; i++) { string += processExpressions(attrData[i], data, this.calculators, this.filename); } return string; } return processExpressions(attrData, data, this.calculators, this.filename); } if (attrs !== undefined) { for (attr in attrs) { if (attrs.hasOwnProperty(attr) && attr !== 'template') { obj[attr] = processDataSequence.call(this, attrs[attr], data); } } } return obj; } }; return entityHelpers; });