@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
JavaScript
;
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;