UNPKG

eessi-kodeverk

Version:

Dictionary of kode/term for use with associated eessi projects

62 lines (51 loc) 1.74 kB
'use strict'; 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;