@gouvfr-anct/mednum
Version:
✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique
204 lines (203 loc) • 9.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLEAN_OPERATIONS = void 0;
const addMissingTimeSeparator = (minutes) => (minutes.startsWith(':') ? minutes : `:${minutes}`);
const setMinutesIfDefined = (minutes) => (minutes == null ? ':00' : addMissingTimeSeparator(minutes));
const addMissing0 = (hours) => (hours.length === 1 ? `0${hours}` : hours);
const formatTime = (hours, minutes) => `${addMissing0(hours)}${setMinutesIfDefined(minutes)}`;
const UNIFORMIZE_HYPHEN_SEPARATOR = {
selector: /–/g,
fix: () => '-'
};
const REMOVE_MULTIPLE_SPACES = {
selector: /\s\s+/g,
fix: () => ' '
};
const ADD_MISSING_TIME_RANGE_SEPARATOR = {
selector: /(?<startHour>[0-2]?\d)[hH](?<endHour>[0-2]?\d)[hH]/g,
fix: (_, startHour, endHour) => `${startHour}h-${endHour}h`
};
const REMOVE_FORMAT_SPACE_TIME_SEPARATOR = {
selector: /^(?<startRangeStartHour>[0-2]?\d)h(?<startRangeStarMinute>[0-5]\d)?\s(?<startRangeEndHour>[0-2]?\d)h(?<startRangeEndMinute>[0-5]\d)?\D+(?<endRangeStartHour>[0-2]?\d)h(?<endRangeStartMinute>[0-5]\d)?\s(?<endRangeEndHour>[0-2]?\d)h(?<endRangeEndMinute>[0-5]\d)?$/u,
fix: (_, startRangeStartHour, startRangeStarMinute, startRangeEndHour, startRangeEndMinute, endRangeStartHour, endRangeStarMinute, endRangeEndHour, endRangeEndMinute) => `${startRangeStartHour}:${startRangeStarMinute}-${startRangeEndHour}:${startRangeEndMinute},${endRangeStartHour}:${endRangeStarMinute}-${endRangeEndHour}:${endRangeEndMinute}`
};
const REMOVE_H_FOR_HOURS_ONLY_RANGE = {
selector: /(?<startHour>[0-2]?\d)[hH]\s?(?<endHour>[0-2]?\d)[hH](?<nextCharacter>\D)/g,
fix: (_, startHour, endHour, nextCharacter) => `${startHour}:00 ${endHour}:00${nextCharacter}`
};
const REMOVE_H_FOR_HOURS_ONLY_RANGE_SINGLE_H = {
selector: /(?<startHour>[0-2]\d)\s(?<endHour>[0-2]?\d)\s*[hH](?<after>\D|$)/g,
fix: (_, startHour, endHour, after) => `${startHour}:00 ${endHour}:00${after}`
};
const REMOVE_H_FOLLOWED_BY_HOURS = {
selector: /[hH]\s?(?<hour>[0-2]?\d)[hH]\s?(?<minute>[0-5]\d)?/g,
fix: (_, hour, minute) => `-${formatTime(hour, minute)}`
};
const REMOVE_H_FOLLOWED_BY_MINUTES = {
selector: /[hH]\s?(?<hourLastNumber>\d)/g,
fix: (_, hourLastNumber) => `:${hourLastNumber}`
};
const REMOVE_H_FOLLOWED_BY_A_SPACE = {
selector: /[hH]\s/g,
fix: () => ' '
};
const REMOVE_H_FOLLOWED_BY_A_SEPARATOR = {
selector: /[hH](?<separator>[-/à])/g,
fix: (_, separator) => separator
};
const REMOVE_WHITE_SPACES = {
selector: /\s/g,
fix: () => ''
};
const FORMAT_ET_SEPARATORS = {
selector: /^(?<startTimeStartRange>.*)[à/,-](?<startTimeEndRange>.*)\s?(?:et|&)\s?(?<endTimeStartRange>.*)[à/,-](?<endTimeEndRange>.*)$/u,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const FORMAT_LITERARY_TIME_SEPARATORS = {
selector: /^(?<startTimeStartRange>.*)à(?<startTimeEndRange>.*)[-_/,](?<endTimeStartRange>.*)à(?<endTimeEndRange>.*)$/u,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const FORMAT_LITERARY_TIME_SEPARATORS_NO_RANGE_SEPARATOR = {
selector: /^(?<startTimeStartRange>.*)à(?<startTimeEndRange>.*\d)\s(?<endTimeStartRange>\d.*)à(?<endTimeEndRange>.*)$/u,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const REPLACE_LITERARY_TIME_SEPARATORS = {
selector: /(?<previous>\d.*?\d?)\s*[àèa]\s*(?<next>\d.*\d)/g,
fix: (_, previous, next) => `${previous}-${next}`
};
const REMOVE_SEPARATOR_IN_TEXT = {
selector: /[a-zA-ZÀ-ú*.'_]+-[a-zA-ZÀ-ú*.'_]+/g,
fix: () => ''
};
const REMOVE_ADDITIONAL_INFORMATION_TEXT_IN_PARENTHESIS = {
selector: /\(.*\)/u,
fix: () => ''
};
const REMOVE_NUMBERS_IN_ADDITIONAL_INFORMATION_TEXT = {
selector: /1er|\d?\d\sjours|[0-3]\d\/[01][1-9]\/\d\d\d\d|\d\s*[a-z]+\s*(?:\/|sur)\s*\d/g,
fix: () => ''
};
const REMOVE_ADDITIONAL_INFORMATION_TEXT = {
selector: /[a-zA-ZÀ-úû*.'_(|>]+/g,
fix: () => ''
};
const REMOVE_ORPHAN_DIGITS = {
selector: /^\s*\d+\s*(?<ranges>[0-2]\d-[0-5]\d)/u,
fix: (_, ranges) => `${ranges}`
};
const FORMAT_MISSING_MINUTES_DIGIT = {
selector: /(?<hour>\d):(?<minuteToFix>\d)(?<followingCharacter>\D|$)/u,
fix: (_, hour, minuteToFix, followingCharacter) => `${hour}:${minuteToFix}0${followingCharacter}`
};
const TRIM = {
selector: /(?<textToTrim>.*)/u,
fix: (textToTrim) => textToTrim.trim()
};
const FORMAT_MISSING_MINUTE_SEPARATOR = {
selector: /(?<hour>[0-2]\d)(?<minute>[0-5]\d)/g,
fix: (_, hour, minute) => `${hour}:${minute}`
};
const FORMAT_MISSING_TIME_SEPARATOR = {
selector: /^(?<startHour>[0-2]?\d)(?<startMinute>:[0-5]\d)(?<endtHour>[0-2]?\d)$/u,
fix: (_, startHour, startMinute, endHour) => `${startHour}:${startMinute}-${endHour}`
};
const FORMAT_SPACE_RANGES_SEPARATORS = {
selector: /^(?<startTimeStartRange>\d?.*\d)\s?[-/\s]\s?(?<startTimeEndRange>.+\d)\s+(?<endTimeStartRange>\d.+\d)\s?[-/\s]\s?(?<endTimeEndRange>.+\d)$/,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const FORMAT_SPACE_TIMES_SEPARATORS = {
selector: /^(?<startTimeStartRange>\d\d:\d\d)\s(?<startTimeEndRange>\d\d:\d\d)\s-\s(?<endTimeStartRange>\d\d:\d\d)\s(?<endTimeEndRange>\d\d:\d\d)$/,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const FORMAT_SPACE_TIME_SEPARATOR = {
selector: /^(?<startTime>\d.+\d)\s(?<endTime>\d.*\d)$/u,
fix: (_, startTime, endTime) => `${startTime}-${endTime}`
};
const FORMAT_HYPHEN_RANGES_SEPARATORS = {
selector: /^(?<startTimeStartRange>.*)[/-](?<startTimeEndRange>.*)-(?<endTimeStartRange>.*)[/-](?<endTimeEndRange>.*)$/u,
fix: (_, startTimeStartRange, startTimeEndRange, endTimeStartRange, endTimeEndRange) => `${startTimeStartRange}-${startTimeEndRange},${endTimeStartRange}-${endTimeEndRange}`
};
const REMOVE_MULTIPLE_SAME_SEPARATOR = {
selector: /(?<separator>[-/,:])+/g,
fix: (_, separator) => `${separator}`
};
const REMOVE_HEADING_SEPARATOR = {
selector: /^[/,;:-]/u,
fix: () => ''
};
const REMOVE_TRAILING_SEPARATOR = {
selector: /[/,;:-]$/u,
fix: () => ''
};
const REMOVE_TIME_SEPARATOR_AFTER_RANGE_SEPARATOR = {
selector: /,:/g,
fix: () => ','
};
const REMOVE_USELESS_TIME_SEPARATOR = {
selector: /:(?<nonDigitChar>\D)/g,
fix: (_, nonDigitChar) => `${nonDigitChar}`
};
const FORMAT_SINGLE_RANGE = {
selector: /^(?<startHour>[0-2]?\d)(?<startMinute>:[0-5]\d)?[-/à,](?<endHour>[0-2]?\d)(?<endMinute>:[0-5]\d)?$/u,
fix: (_, startHour, startMinute = undefined, endHour, endMinute = undefined) => `${formatTime(startHour, startMinute)}-${formatTime(endHour, endMinute)}`
};
const FORMAT_TWO_TIMES_RANGES = {
selector: /^(?<startHourStartRange>[0-2]?\d)(?<startMinuteStartRange>:[0-5]\d)?[-/à,]?(?<endHourStartRange>[0-2]?\d)(?<endMinuteStartRange>:[0-5]\d)?[|/;,](?<startHourEndRange>[0-2]?\d)(?<startMinuteEndRange>:[0-5]\d)?[-/à,]?(?<endHourEndRange>[0-2]?\d)(?<endMinuteEndRange>:[0-5]\d)?$/u,
fix: (_, startHourStartRange, startMinuteStartRange = undefined, endHourStartRange, endMinuteStartRange = undefined, startHourEndRange, startMinuteEndRange = undefined, endHourEndRange, endMinuteEndRange) => `${formatTime(startHourStartRange, startMinuteStartRange)}-${formatTime(endHourStartRange, endMinuteStartRange)},${formatTime(startHourEndRange, startMinuteEndRange)}-${formatTime(endHourEndRange, endMinuteEndRange)}`
};
const REMOVE_NO_TIME_RANGE = {
selector: /^[0-2]?\d(?::[0-5]\d)?$/,
fix: () => ''
};
const REMOVE_TIME_EXTRA_DIGITS = {
selector: /(?<digitsToKeep>\d\d)\d/g,
fix: (_, digitsToKeep) => digitsToKeep
};
const CLEAN_WHITESPACE_SEPARATORS = [
FORMAT_SPACE_TIMES_SEPARATORS,
FORMAT_SPACE_RANGES_SEPARATORS,
FORMAT_SPACE_TIME_SEPARATOR
];
const CLEAN_ALL_SEPARATORS = [
FORMAT_MISSING_MINUTE_SEPARATOR,
FORMAT_MISSING_TIME_SEPARATOR,
REMOVE_TIME_SEPARATOR_AFTER_RANGE_SEPARATOR,
REMOVE_MULTIPLE_SAME_SEPARATOR,
REMOVE_HEADING_SEPARATOR,
REMOVE_TRAILING_SEPARATOR,
REMOVE_USELESS_TIME_SEPARATOR,
FORMAT_HYPHEN_RANGES_SEPARATORS
];
const FINAL_OSM_FORMATTING = [
FORMAT_SINGLE_RANGE,
FORMAT_TWO_TIMES_RANGES,
REMOVE_NO_TIME_RANGE,
REMOVE_TIME_EXTRA_DIGITS
];
exports.CLEAN_OPERATIONS = [
UNIFORMIZE_HYPHEN_SEPARATOR,
REMOVE_MULTIPLE_SPACES,
ADD_MISSING_TIME_RANGE_SEPARATOR,
REMOVE_FORMAT_SPACE_TIME_SEPARATOR,
REMOVE_H_FOR_HOURS_ONLY_RANGE,
REMOVE_H_FOR_HOURS_ONLY_RANGE_SINGLE_H,
REMOVE_H_FOLLOWED_BY_HOURS,
REMOVE_H_FOLLOWED_BY_MINUTES,
REMOVE_H_FOLLOWED_BY_A_SPACE,
REMOVE_H_FOLLOWED_BY_A_SEPARATOR,
FORMAT_ET_SEPARATORS,
FORMAT_LITERARY_TIME_SEPARATORS,
FORMAT_LITERARY_TIME_SEPARATORS_NO_RANGE_SEPARATOR,
REPLACE_LITERARY_TIME_SEPARATORS,
REMOVE_SEPARATOR_IN_TEXT,
REMOVE_ADDITIONAL_INFORMATION_TEXT_IN_PARENTHESIS,
REMOVE_NUMBERS_IN_ADDITIONAL_INFORMATION_TEXT,
REMOVE_ADDITIONAL_INFORMATION_TEXT,
REMOVE_ORPHAN_DIGITS,
FORMAT_MISSING_MINUTES_DIGIT,
TRIM,
...CLEAN_WHITESPACE_SEPARATORS,
REMOVE_WHITE_SPACES,
...CLEAN_ALL_SEPARATORS,
...FINAL_OSM_FORMATTING
];