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+)(èr|nd|en)?[a]?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(ab\.J\.C|apr\.J\.C|apr\.J\.-C)/i , abbreviated : /^(ab\.J\.-C|ab\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i , wide : /^(abans Jèsus-Crist|après Jèsus-Crist)/i , } ; const parseEraPatterns = { any : [ /^ab/i , /^ap/i ] as const , } ; const matchQuarterPatterns = { narrow : /^T[1234]/i , abbreviated : /^[1234](èr|nd|en)? trim\.?/i , wide : /^[1234](èr|nd|en)? trimèstre/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^(GN|FB|MÇ|AB|MA|JN|JL|AG|ST|OC|NV|DC)/i , abbreviated : /^(gen|febr|març|abr|mai|junh|jul|ag|set|oct|nov|dec)\.?/i , wide : /^(genièr|febrièr|març|abril|mai|junh|julhet|agost|setembre|octòbre|novembre|decembre)/i , } ; const parseMonthPatterns = { any : [ /^g/i , /^f/i , /^ma[r?]|MÇ/i , /^ab/i , /^ma[i?]/i , /^ju[n?]|JN/i , /^ju[l?]|JL/i , /^ag/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^d[glmcjvs]\.?/i , short : /^d[glmcjvs]\.?/i , abbreviated : /^d[glmcjvs]\.?/i , wide : /^(dimenge|diluns|dimars|dimècres|dijòus|divendres|dissabte)/i , } ; const parseDayPatterns = { narrow : [ /^dg/i , /^dl/i , /^dm/i , /^dc/i , /^dj/i , /^dv/i , /^ds/i ] as const , short : [ /^dg/i , /^dl/i , /^dm/i , /^dc/i , /^dj/i , /^dv/i , /^ds/i ] as const , abbreviated : [ /^dg/i , /^dl/i , /^dm/i , /^dc/i , /^dj/i , /^dv/i , /^ds/i , ] as const , any : [ /^dg|dime/i , /^dl|dil/i , /^dm|dima/i , /^dc|dimè/i , /^dj|dij/i , /^dv|div/i , /^ds|dis/i , ] as const , } ; const matchDayPeriodPatterns = { any : /(^(a\.?m|p\.?m))|(ante meridiem|post meridiem)|((del |de la |de l’)(matin|aprèp-miègjorn|vèspre|ser|nuèch))/i , } ; const parseDayPeriodPatterns = { any : { am : /(^a)|ante meridiem/i , pm : /(^p)|post meridiem/i , midnight : /^mièj/i , noon : /^mièg/i , morning : /matin/i , afternoon : /aprèp-miègjorn/i , evening : /vèspre|ser/i , night : /nuèch/i , } , } ; const match = { ordinalNumber : buildMatchPatternFn ( { matchPattern : matchOrdinalNumberPattern , parsePattern : parseOrdinalNumberPattern , valueCallback : ( value ) => parseInt ( value , 10 ) , } ) , 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 ;