melosys-kodeverk
Version:
Dictionary of kode/term objects for use with associated melosys projects
46 lines (38 loc) • 1.26 kB
JavaScript
;
var MAX_LEVELS = 5;
var arrayToObjectSet = function arrayToObjectSet(array) {
return array.reduce(function (obj, item) {
obj[item.kode] = item.kode; // NB! kode => kode
return obj;
}, {});
};
var arrayToObjectMap = function arrayToObjectMap(array) {
return array.reduce(function (obj, item) {
obj[item.kode] = item.term; // NB! kode => term
return obj;
}, {});
};
var kodeverk2Kode = function kodeverk2Kode(kodeverk, arrayReducerFunc) {
var counter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
if (counter > MAX_LEVELS) {
console.error("Max levels = " + MAX_LEVELS + " Reached");
return {};
}
if (Array.isArray(kodeverk)) {
return arrayReducerFunc(kodeverk);
}
var codes = {};
for (var verk in kodeverk) {
var node = kodeverk[verk];
codes[verk] = kodeverk2Kode(node, arrayReducerFunc, counter + 1);
}
return codes;
};
var kodeverk2KodeSet = function kodeverk2KodeSet(kodeverk) {
return kodeverk2Kode(kodeverk, arrayToObjectSet);
};
module.exports.kodeverk2KodeSet = kodeverk2KodeSet;
var kodeverk2KodeMap = function kodeverk2KodeMap(kodeverk) {
return kodeverk2Kode(kodeverk, arrayToObjectMap);
};
module.exports.kodeverk2KodeMap = kodeverk2KodeMap;