eessi-kodeverk
Version:
Dictionary of kode/term for use with associated eessi projects
62 lines (51 loc) • 1.74 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 kodeTilObjekt = function kodeTilObjekt(kode, muligeKoder) {
return muligeKoder.find(function (enkeltKode) {
return objektTilKode(enkeltKode) === kode;
});
};
var objektTilKode = function objektTilKode(KTObjekt) {
if (!KTObjekt || !KTObjekt.kode) {
throw new Error('Ukjent kode');
}
return Object.keys(KTObjekt).includes('kode') ? KTObjekt.kode : null;
};
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;
module.exports.kodeTilObjekt = kodeTilObjekt;
module.exports.objektTilKode = objektTilKode;