UNPKG

@gouvfr-anct/mednum

Version:

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

49 lines (48 loc) 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.voieField = exports.CLEAN_VOIE = void 0; const REMOVE_MULTIPLE_SPACES_IN_VOIE = { name: 'replace multiple spaces with single space', selector: /\s+/u, fix: (toFix) => toFix.replace(/\s+/gu, ' ') }; const FIX_WRONG_SINGLE_QUOTE_IN_VOIE = { name: 'fix wrong single quote', selector: /’/u, fix: (toFix) => toFix.replace(/’/gu, "'") }; const REMOVE_FORBIDDEN_CHARS_IN_VOIE = { name: 'replace forbidden chars with empty string', selector: /[",²]/u, fix: (toFix) => toFix.replace(/[",²]/gu, '') }; const REMOVE_MULTILINES_IN_VOIE = { name: 'replace carriage returns with space', selector: /\n|\\n/u, fix: (toFix) => toFix.replace(/\n|\\n/u, ' ') }; const REMOVE_ZIPCODE_AND_FOLLOWING_TEXT_IN_VOIE = { name: 'remove zipcode and following text in voie', selector: /^(?<voie>.*?)\s\d{5}\s\w+/u, fix: (toFix) => /^(?<voie>.*?)\s\d{5}\s\w+/u.exec(toFix)?.groups?.['voie'] ?? toFix }; const REMOVE_HEADING_AND_TRAILING_SPACES_IN_VOIE = { name: 'remove heading and trailing spaces', selector: /^\s+|\s+$/u, fix: (toFix) => toFix.trim() }; exports.CLEAN_VOIE = [ REMOVE_MULTIPLE_SPACES_IN_VOIE, FIX_WRONG_SINGLE_QUOTE_IN_VOIE, REMOVE_FORBIDDEN_CHARS_IN_VOIE, REMOVE_MULTILINES_IN_VOIE, REMOVE_ZIPCODE_AND_FOLLOWING_TEXT_IN_VOIE, REMOVE_HEADING_AND_TRAILING_SPACES_IN_VOIE ]; const isColonne = (colonneToTest) => colonneToTest.colonne != null; const voieField = (source, voie) => isColonne(voie) ? (source[voie.colonne]?.toString() ?? '') : voie.joindre.colonnes .reduce((voiePart, colonne) => [voiePart, source[colonne]].join(voie.joindre.séparateur), '') .trim(); exports.voieField = voieField;