UNPKG

@gouvfr-anct/mednum

Version:

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

110 lines (109 loc) 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HORAIRES_FIELD_CLEAN_OPERATIONS = exports.REPLACE_SHORT_DAYS = void 0; const REPLACE_SHORT_LUNDI = { selector: /(?:^|\s)lu?(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` lundi ${afterDay}` }; const REPLACE_SHORT_MARDI = { selector: /(?:^|\s)ma(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` mardi ${afterDay}` }; const REPLACE_SHORT_MERCREDI = { selector: /(?:^|\s)me(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` mercredi ${afterDay}` }; const REPLACE_SHORT_JEUDI = { selector: /(?:^|\s)je?(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` jeudi ${afterDay}` }; const REPLACE_SHORT_VENDREDI = { selector: /(?:^|\s)ve?(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` vendredi ${afterDay}` }; const REPLACE_SHORT_SAMEDI = { selector: /(?:^|\s)sa?(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` samedi ${afterDay}` }; const REPLACE_SHORT_DIMANCHE = { selector: /(?:^|\s)di?(?<afterDay>\s|\d)/gu, fix: (_, afterDay) => ` dimanche ${afterDay}` }; const REPLACE_HYPHEN_DAYS_RANGE_WITH_AU = { selector: /(?<startDay>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)\s*-\s*(?<endDay>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)/gu, fix: (_, startDay, endDay) => `${startDay} au ${endDay}` }; const REPLACE_ANY_DAYS_SEPARATOR_WITH_SLASH = { selector: /(?:et|le|sauf|---|\.|-|>|,|\s{3})[\s:a-z]*(?<day>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)/gu, fix: (day) => `/ ${day}` }; const REPLACE_SLASH_TIME_SEPARATOR_WITH_HYPHEN = { selector: /(?<startTime>[0-2]?\dh?(?:[0-5]?\d)?)\s?\/\s?(?<endTime>[0-2]?\dh?(?:[0-5]?\d)?)/gu, fix: (_, startTime, endTime) => `${startTime}-${endTime}` }; const REMOVE_PHONE_NUMBERS = { selector: /\d\d[-.\s]?\d\d[-.\s]?\d\d[-.\s]?\d\d[-.\s]?\d\d/gu, fix: () => '' }; const REPLACE_DOT_DAYS_SEPARATOR_WITH_SLASH = { selector: /\.\s/gu, fix: () => '/ ' }; const REPLACE_0_INSTEAD_OF_ACCENTED_A_TYPO = { selector: /\s0\s/gu, fix: () => ' à ' }; const INSERT_DAYS_SEPARATOR_BETWEEN_H_AND_DU = { selector: /h\sdu/gu, fix: () => 'h / du' }; const FIX_REVERSE_AU = { selector: /(?<hours>.*)(?<days>du\s(?<startDay>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)\sau\s(?<endDay>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche))\s*(?:\/|et|$)/u, fix: (_, hours, days) => `${days} ${hours} ` }; const FIX_REVERSE_SINGLE_DAY = { selector: /(?<hours>[0-2]?\dh?(?:[0-5]?\d)?-[0-2]?\dh?(?:[0-5]?\d)?)\D+\/\D+(?<day>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)$/u, fix: (_, hours, day) => `/ ${day} ${hours} ` }; const INSERT_DAYS_SEPARATOR_BETWEEN_HOURS_AND_DAY = { selector: /(?<before>[0-2]?\d\s*h(?:[0-5]\d)?)\s(?<day>lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche)/gu, fix: (_, before, day) => `${before} / ${day}` }; const CLEAN_UNICODE_AND_USELESS_CHAR = { selector: /[\n+'"]/gu, fix: () => ' ' }; const INSERT_COMMA_BETWEEN_DAYS = { selector: /(?<=\d)\s*\b\p{L}+\b\s*(?=:)/gu, fix: (day) => `,${day}` }; const REPLACE_DASH_BY_DOUBLE_DOT_ONLY_IF_IT_IS_TIME = { selector: /(?<![0-9a-zA-Z-])\d{2}\/\d{2}(?![0-9a-zA-Z-])/gu, fix: (time) => time.replace('/', ':') }; exports.REPLACE_SHORT_DAYS = [ REPLACE_SHORT_LUNDI, REPLACE_SHORT_MARDI, REPLACE_SHORT_MERCREDI, REPLACE_SHORT_JEUDI, REPLACE_SHORT_VENDREDI, REPLACE_SHORT_SAMEDI, REPLACE_SHORT_DIMANCHE ]; exports.HORAIRES_FIELD_CLEAN_OPERATIONS = [ ...exports.REPLACE_SHORT_DAYS, CLEAN_UNICODE_AND_USELESS_CHAR, INSERT_COMMA_BETWEEN_DAYS, REPLACE_DASH_BY_DOUBLE_DOT_ONLY_IF_IT_IS_TIME, REPLACE_HYPHEN_DAYS_RANGE_WITH_AU, REPLACE_ANY_DAYS_SEPARATOR_WITH_SLASH, REPLACE_SLASH_TIME_SEPARATOR_WITH_HYPHEN, REPLACE_SLASH_TIME_SEPARATOR_WITH_HYPHEN, REMOVE_PHONE_NUMBERS, REPLACE_DOT_DAYS_SEPARATOR_WITH_SLASH, REPLACE_0_INSTEAD_OF_ACCENTED_A_TYPO, INSERT_DAYS_SEPARATOR_BETWEEN_H_AND_DU, FIX_REVERSE_AU, FIX_REVERSE_SINGLE_DAY, INSERT_DAYS_SEPARATOR_BETWEEN_HOURS_AND_DAY ];