@gouvfr-anct/mednum
Version:
✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique
165 lines (164 loc) • 6.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.communeField = exports.CLEAN_COMMUNE = void 0;
const FIX_WRONG_ACCENT_CHARS = {
name: 'replace ╢ with Â',
selector: /╢/,
fix: (toFix) => toFix.replace('╢', 'Â')
};
const FIX_WRONG_APOSTROPHE = {
name: 'replace curved apostrophe with quote',
selector: /’/,
fix: (toFix) => toFix.replace('’', "'")
};
const REPLACE_HEADING_ST_WITH_SAINT = {
name: 'replace st with saint',
selector: /^[Ss][Tt][-\s]/,
fix: (toFix) => toFix.replace(/^[Ss][Tt][-\s]/g, 'Saint-')
};
const REPLACE_HEADING_STE_WITH_SAINTE = {
name: 'replace st with saint',
selector: /^[Ss][Tt][Ee][-\s]/,
fix: (toFix) => toFix.replace(/^[Ss][Tt][Ee][-\s]/g, 'Sainte-')
};
const REPLACE_ST_WITH_SAINT = {
name: 'replace st with saint',
selector: /[-\s][Ss][Tt][-\s]/,
fix: (toFix) => toFix.replace(/[-\s][Ss][Tt][-\s]/g, '-Saint-')
};
const REPLACE_STE_WITH_SAINTE = {
name: 'replace st with saint',
selector: /[-\s][Ss][Tt][Ee][-\s]/,
fix: (toFix) => toFix.replace(/[-\s][Ss][Tt][Ee][-\s]/g, '-Sainte-')
};
const REMOVE_TEXT_BETWEEN_PARENTHESIS = {
name: 'remove text between parenthesis',
selector: /\([^)]+\)/,
fix: (toFix) => toFix.trim()
};
const REMOVE_DISTRICT = {
name: 'remove district',
selector: /\d+er?/,
fix: (toFix) => toFix.replace(/\d+er?/, '')
};
const REMOVE_CEDEX = {
name: 'remove cedex',
selector: /-?[Cc](?:[ÉE]DEX|[ée]dex)\s?\d*/,
fix: (toFix) => toFix.replace(/-?[Cc](?:[ÉE]DEX|[ée]dex)\s?\d*/, '')
};
const REMOVE_NUMERIC_CHARS = {
name: 'remove numeric characters',
selector: /\d+/g,
fix: (toFix) => toFix.replace(/\d+/g, '')
};
const REMOVE_SPACE_AFTER_QUOTE = {
name: 'remove space after quote',
selector: /'\s+/,
fix: (toFix) => toFix.replace(/'\s+/, "'")
};
const REMOVE_HEADING_AND_TRAILING_SPACES = {
name: 'remove heading and trailing spaces',
selector: /^\s+|\s+$/,
fix: (toFix) => toFix.trim()
};
const REPLACE_SPACES_WITH_DASHES = {
name: 'replace spaces with dashed',
selector: /\s/,
fix: (toFix) => toFix.replace(/\s/g, '-')
};
const FIX_UNEXPECTED_DETAILS = {
name: 'unexpected details in commune',
selector: /\s*\(.*\)\s*/,
fix: (toFix) => toFix.toString().replace(/\s*\(.*\)\s*/, '')
};
const FIX_FORGOTTEN_ARTICLE_FROM_PONTDECLAIX = {
name: 'put forgotten le for Pont-de-Claix',
selector: /^Pont-de-Claix$/,
fix: (toFix) => toFix.toString().replace(/^Pont-de-Claix$/, 'Le Pont-de-Claix')
};
const FIX_FORGOTTEN_ARTICLE_FROM_NOUVION_EN_THIERACHE = {
name: 'le for NOUVION-EN-THIÉRACHE',
selector: /^Nouvion-en-Thiérache$/,
fix: (toFix) => toFix.toString().replace(/^Nouvion-en-Thiérache$/, 'Le Nouvion-en-Thiérache')
};
const FIX_FORGOTTEN_ARTICLE_FROM_FAY_SAINT_QUENTIN = {
name: 'put forgotten le for FAY-SAINT-QUENTIN',
selector: /^Fay-Saint-Quentin$/,
fix: (toFix) => toFix.toString().replace(/^Fay-Saint-Quentin$/, 'Le Fay-Saint-Quentin')
};
const FIX_ADDED_LETTER_FROM_GRANDCHAMPS_DES_FONTAINES = {
name: 'delete the letter s for Grandchamps-des-Fontaines',
selector: /^Grandchamps-des-Fontaines$/,
fix: (toFix) => toFix.toString().replace(/^Grandchamps-des-Fontaines$/, 'Grandchamp-des-Fontaines')
};
const FIX_FORGOTTEN_ARTICLE_FROM_PRECHEUR = {
name: 'put forgotten le for Prêcheur',
selector: /^Prêcheur$/,
fix: (toFix) => toFix.toString().replace(/^Prêcheur$/, 'Le Prêcheur')
};
const FIX_SPELLING_NAME_OF_BORDERES_ET_LAMESENS = {
name: 'fix typo in Bordères-et-Lamensen ',
selector: /^Bordères-et-Lamensens$/,
fix: (toFix) => toFix.toString().replace(/^Bordères-et-Lamensens$/, 'Bordères-et-Lamensans')
};
const FIX_SPELLING_NAME_OF_PIERREFFITTES_NESTALAS = {
name: 'fix typo in Pierreffitte-Nestalas ',
selector: /^Pierreffitte-Nestalas$/,
fix: (toFix) => toFix.toString().replace(/^Pierreffitte-Nestalas$/, 'Pierrefitte-Nestalas')
};
const FIX_SPELLING_NAME_OF_AYRE_SUR_LA_LYS = {
name: 'fix typo in Ayre-sur-la-Lys',
selector: /^Ayre-sur-la-Lys$/,
fix: (toFix) => toFix.toString().replace(/^Ayre-sur-la-Lys$/, 'Aire-sur-la-Lys')
};
const FIX_SPELLING_NAME_OF_SAUGNACQ_ET_MURET = {
name: 'fix typo in Saugnacq-et-muret',
selector: /^Saugnacq-et-muret$/,
fix: (toFix) => toFix.toString().replace(/^Saugnacq-et-muret$/, 'Saugnac-et-muret')
};
const FIX_FORGOTTEN_DASH_OF_SAINT_PHILIBERT_DE_GRANDLIEU = {
name: 'fix typo in Saint-Philbert-de-Grandlieu',
selector: /^Saint-Philbert-de-Grandlieu$/,
fix: (toFix) => toFix.toString().replace(/^Saint-Philbert-de-Grandlieu$/, 'Saint-Philbert-de-Grand-Lieu')
};
const FIX_FORGOTTEN_APOSTROPHE_OF_SAINT_DONAT_SUR_LHERBASSE = {
name: 'fix typo in Saint-Donat-sur-lHerbasse',
selector: /^Saint-Donat-sur-lHerbasse$/,
fix: (toFix) => toFix.toString().replace(/^Saint-Donat-sur-lHerbasse$/, "Saint-Donat-sur-l'Herbasse")
};
const FIX_FORGOTTEN_LETTER_L_OF_LES_MOLETTES = {
name: 'fix typo in Les-Molettes',
selector: /^Les-Molettes$/,
fix: (toFix) => toFix.toString().replace(/^Les-Molettes/, 'Les-Mollettes')
};
exports.CLEAN_COMMUNE = [
FIX_UNEXPECTED_DETAILS,
FIX_WRONG_ACCENT_CHARS,
FIX_WRONG_APOSTROPHE,
REPLACE_HEADING_ST_WITH_SAINT,
REPLACE_HEADING_STE_WITH_SAINTE,
REPLACE_ST_WITH_SAINT,
REPLACE_STE_WITH_SAINTE,
REMOVE_TEXT_BETWEEN_PARENTHESIS,
REMOVE_DISTRICT,
REMOVE_CEDEX,
REMOVE_NUMERIC_CHARS,
REMOVE_SPACE_AFTER_QUOTE,
REMOVE_HEADING_AND_TRAILING_SPACES,
FIX_FORGOTTEN_ARTICLE_FROM_PONTDECLAIX,
FIX_FORGOTTEN_ARTICLE_FROM_NOUVION_EN_THIERACHE,
FIX_FORGOTTEN_ARTICLE_FROM_FAY_SAINT_QUENTIN,
FIX_ADDED_LETTER_FROM_GRANDCHAMPS_DES_FONTAINES,
FIX_FORGOTTEN_ARTICLE_FROM_PRECHEUR,
FIX_SPELLING_NAME_OF_BORDERES_ET_LAMESENS,
FIX_SPELLING_NAME_OF_PIERREFFITTES_NESTALAS,
REPLACE_SPACES_WITH_DASHES,
FIX_SPELLING_NAME_OF_AYRE_SUR_LA_LYS,
FIX_SPELLING_NAME_OF_SAUGNACQ_ET_MURET,
FIX_FORGOTTEN_DASH_OF_SAINT_PHILIBERT_DE_GRANDLIEU,
FIX_FORGOTTEN_APOSTROPHE_OF_SAINT_DONAT_SUR_LHERBASSE,
FIX_FORGOTTEN_LETTER_L_OF_LES_MOLETTES
];
const communeFromVoie = (voie) => /\b\d{5}\b\s*,?\s*(?<commune>[\w\s\-éèêàâôûç-]+)/u.exec(voie)?.groups?.['commune'] ?? '';
const communeField = (voie, commune) => commune?.toString() ?? communeFromVoie(voie);
exports.communeField = communeField;