'use strict';
function ModuleConnectorService(){
- var isBuildInType = function (type) {
- return ['int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', 'uint64',
- 'decimal64', 'string', 'boolean', 'enumeration', 'bits', 'binary',
- 'leafref', 'identityref', 'empty', 'union', 'instance-identifier'].indexOf(type) > -1;
- };
- var moduleConnector = {},
- linkFunctions = {};
+ var service = {
+ processModuleObjs: processModuleObjs,
+ __test: {
+ isBuildInType: isBuildInType,
+ linkFunctions: linkFunctions,
+ findLinkedStatement: findLinkedStatement,
+ appendChildren: appendChildren,
+ searchModule: searchModule,
+ applyLinks: applyLinks,
+ interConnectModules: interConnectModules,
+ applyModuleRevision: applyModuleRevision,
+ },
+ },
+ linkFunctions = {
+ uses: uses,
+ type: type,
+ };
+
+ return service;
+
+ // TODO: add service's description
+ function processModuleObjs(modules) {
+ var rootNodes = [],
+ augments = [],
+ connectedModules = interConnectModules(modules.slice());
+
+ connectedModules.forEach(function (module) {
+ rootNodes = rootNodes.concat(module.getRoots());
+ augments = augments.concat(module.getAugments());
+ });
+
+ return { rootNodes: rootNodes, augments: augments };
+ }
- linkFunctions.uses = function (usesNode, currentModule) {
+ // TODO: add function's description
+ function uses(usesNode, currentModule) {
var targetType = 'grouping';
return function (modules) {
var data = findLinkedStatement(usesNode, targetType, currentModule, modules),
changed = false;
if (node && module) {
- usesNode.parent.children.splice(usesNode.parent.children.indexOf(usesNode), 1); //delete uses node
+ usesNode.parent.children.splice(usesNode.parent.children.indexOf(usesNode), 1); // delete uses node
for (var i = 0; i < node.children.length; i++) {
applyLinks(node.children[i], module, modules);
}
return changed;
};
- };
+ }
- linkFunctions.type = function (typeNode, currentModule) {
+ // TODO: add function's description
+ function type(typeNode, currentModule) {
var targetType = 'typedef';
if (isBuildInType(typeNode.label) === false) {
changed = false;
if (node) {
- typeNode.parent.children.splice(typeNode.parent.children.indexOf(typeNode), 1); //delete referencing type node
+ // delete referencing type node
+ typeNode.parent.children.splice(typeNode.parent.children.indexOf(typeNode), 1);
typeNode.parent.addChild(node);
changed = true;
}
return false;
};
}
- };
+ }
- var findLinkedStatement = function (node, targetType, currentModule, modules) {
+ // TODO: add function's description
+ function isBuildInType(type) {
+ return ['int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', 'uint64',
+ 'decimal64', 'string', 'boolean', 'enumeration', 'bits', 'binary',
+ 'leafref', 'identityref', 'empty', 'union', 'instance-identifier'].indexOf(type) > -1;
+ }
+
+ // TODO: add function's description
+ function findLinkedStatement(node, targetType, currentModule, modules) {
var sourceNode,
sourceModule,
link = node.label;
var parts = link.split(':'),
targetImport = currentModule.getImportByPrefix(parts[0]);
- sourceModule = targetImport ? searchModule(modules, targetImport.label, targetImport.revisionDate) : null;
+ sourceModule = targetImport ?
+ searchModule(modules, targetImport.label, targetImport.revisionDate) : null;
sourceNode = sourceModule ? sourceModule.searchNode(targetType, parts[1]) : null;
} else {
sourceModule = searchModule(modules, node.module, node.moduleRevision);
sourceNode = sourceModule ? sourceModule.searchNode(targetType, link) : null;
}
- return {node: sourceNode, module: sourceModule};
- };
+ return { node: sourceNode, module: sourceModule };
+ }
- var appendChildren = function (targetNode, sourceNode) {
+ // TODO: add function's description
+ function appendChildren(targetNode, sourceNode) {
sourceNode.children.forEach(function (child) {
targetNode.addChild(child);
});
- };
+ }
- var searchModule = function (modules, moduleName, moduleRevision) {
+ // TODO: add function's description
+ function searchModule(modules, moduleName, moduleRevision) {
var searchResults = modules.filter(function (item) {
return (moduleName === item._name && (moduleRevision ? moduleRevision === item._revision : true));
}),
targetModule = (searchResults && searchResults.length) ? searchResults[0] : null;
return targetModule;
- };
- var applyLinks = function (node, module, modules) {
+ }
+
+ // TODO: add function's description
+ function applyLinks(node, module, modules) {
var changed = false;
- if (linkFunctions.hasOwnProperty(node.type)) { //applying link function to uses.node
+ if (linkFunctions.hasOwnProperty(node.type)) { // applying link function to uses.node
changed = linkFunctions[node.type](node, module)(modules);
}
for (var i = 0; i < node.children.length; i++) {
if (applyLinks(node.children[i], module, modules)) {
- i--; //need to repeat current index because we are deleting uses nodes, so in case there are more uses in row, it would skip second one
+ i--;
+ // need to repeat current index because we are deleting uses nodes,
+ // so in case there are more uses in row, it would skip second one
}
}
return changed;
- };
+ }
- var interConnectModules = function (modules) {
- var rootNodes = [],
- augments = [];
+ // TODO: add function's description
+ function interConnectModules(modules) {
modules.forEach(function (module) {
module.getRoots().concat(module.getRawAugments()).forEach(function (node) {
});
return modules;
- };
+ }
- var applyModuleRevision = function (node, module, revision) {
+ // TODO: add function's description
+ function applyModuleRevision(node, module, revision) {
node.module = module;
node.moduleRevision = revision;
});
return node;
- };
-
- moduleConnector.processModuleObjs = function (modules) {
- var rootNodes = [],
- augments = [],
- connectedModules = interConnectModules(modules.slice());
-
- connectedModules.forEach(function (module) {
- rootNodes = rootNodes.concat(module.getRoots());
- augments = augments.concat(module.getAugments());
- });
-
- return {rootNodes: rootNodes, augments: augments};
- };
-
- moduleConnector.__test = {
- isBuildInType: isBuildInType,
- linkFunctions: linkFunctions,
- findLinkedStatement: findLinkedStatement,
- appendChildren: appendChildren,
- searchModule: searchModule,
- applyLinks: applyLinks,
- interConnectModules: interConnectModules,
- applyModuleRevision: applyModuleRevision
- };
-
- return moduleConnector;
+ }
}
- ModuleConnectorService.$inject=[];
+ ModuleConnectorService.$inject = [];
return ModuleConnectorService;
-});
\ No newline at end of file
+});