UNPKG

@gouvfr-anct/mednum

Version:

✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique

26 lines (25 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processDispositifProgrammeNationaux = void 0; const lieux_de_mediation_numerique_1 = require("@gouvfr-anct/lieux-de-mediation-numerique"); const input_1 = require("../../input"); const isAllowedTerm = (choice, sourceValue) => choice.sauf?.every((forbidden) => !sourceValue.includes(forbidden)) ?? true; const isTermFound = (sourceValue, choice) => (found, term) => found || (sourceValue.includes(term.toLowerCase()) && isAllowedTerm(choice, sourceValue)); const containsOneOfTheTerms = (choice, sourceValue = '') => choice.termes == null ? sourceValue !== '' : choice.termes.reduce(isTermFound(sourceValue.toLowerCase(), choice), false); const appendDispositifProgrammeNational = (dispositifsProgrammesNationaux, dispositifProgrammeNational) => [ ...dispositifsProgrammesNationaux, ...(dispositifProgrammeNational == null ? [] : [dispositifProgrammeNational]) ]; const isDefault = (choice) => choice.colonnes == null; const findAndAppendDispositifsProgrammesNationaux = (choice, source) => (dispositifsProgrammesNationaux, colonne) => containsOneOfTheTerms(choice, source[colonne]?.toString()) ? appendDispositifProgrammeNational(dispositifsProgrammesNationaux, choice.cible) : dispositifsProgrammesNationaux; const dispositifsProgrammesNationauxForTerms = (choice, source) => (dispositifsProgrammesNationaux, colonne) => isDefault(choice) ? appendDispositifProgrammeNational(dispositifsProgrammesNationaux, choice.cible) : findAndAppendDispositifsProgrammesNationaux(choice, source)(dispositifsProgrammesNationaux, colonne); const appendDispositifsProgrammesNationaux = (source) => (dispositifsProgrammesNationaux, choice) => [ ...dispositifsProgrammesNationaux, ...(choice.colonnes ?? (0, input_1.cibleAsDefault)(choice)).reduce(dispositifsProgrammesNationauxForTerms(choice, source), []) ]; const processDispositifProgrammeNationaux = (source, matching) => (0, lieux_de_mediation_numerique_1.DispositifProgrammesNationaux)(Array.from(new Set(matching.dispositif_programmes_nationaux?.reduce(appendDispositifsProgrammesNationaux(source), [])))); exports.processDispositifProgrammeNationaux = processDispositifProgrammeNationaux;