import type { Quarter } from '../../../../types' ; import type { Match } from '../../../types' ; import buildMatchFn from '../../../_lib/buildMatchFn/index' ; import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index' ; const matchOrdinalNumberPattern = /^(\d+)(ième|ère|ème|er|e)?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i , abbreviated : /^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i , wide : /^(avant Jésus-Christ|après Jésus-Christ)/i , } ; const parseEraPatterns = { any : [ /^av/i , /^ap/i ] as const , } ; const matchQuarterPatterns = { narrow : /^T?[1234]/i , abbreviated : /^[1234](er|ème|e)? trim\.?/i , wide : /^[1234](er|ème|e)? trimestre/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jfmasond]/i , abbreviated : /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i , wide : /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i , } ; const parseMonthPatterns = { narrow : [ /^j/i , /^f/i , /^m/i , /^a/i , /^m/i , /^j/i , /^j/i , /^a/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , any : [ /^ja/i , /^f/i , /^mar/i , /^av/i , /^ma/i , /^juin/i , /^juil/i , /^ao/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[lmjvsd]/i , short : /^(di|lu|ma|me|je|ve|sa)/i , abbreviated : /^(dim|lun|mar|mer|jeu|ven|sam)\.?/i , wide : /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i , } ; const parseDayPatterns = { narrow : [ /^d/i , /^l/i , /^m/i , /^m/i , /^j/i , /^v/i , /^s/i ] as const , any : [ /^di/i , /^lu/i , /^ma/i , /^me/i , /^je/i , /^ve/i , /^sa/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i , any : /^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^min/i , noon : /^mid/i , morning : /mat/i , afternoon : /ap/i , evening : /soir/i , night : /nuit/i , } , } ; const match = { ordinalNumber : buildMatchPatternFn ( { matchPattern : matchOrdinalNumberPattern , parsePattern : parseOrdinalNumberPattern , valueCallback : ( value ) => parseInt ( value ) , } ) , era : buildMatchFn ( { matchPatterns : matchEraPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseEraPatterns , defaultParseWidth : 'any' , } ) , quarter : buildMatchFn ( { matchPatterns : matchQuarterPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseQuarterPatterns , defaultParseWidth : 'any' , valueCallback : ( index ) => ( index + 1 ) as Quarter , } ) , month : buildMatchFn ( { matchPatterns : matchMonthPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseMonthPatterns , defaultParseWidth : 'any' , } ) , day : buildMatchFn ( { matchPatterns : matchDayPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseDayPatterns , defaultParseWidth : 'any' , } ) , dayPeriod : buildMatchFn ( { matchPatterns : matchDayPeriodPatterns , defaultMatchWidth : 'any' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;