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 ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(Î|D)/i , abbreviated : /^(Î\.?\s?d\.?\s?C\.?|Î\.?\s?e\.?\s?n\.?|D\.?\s?C\.?|e\.?\s?n\.?)/i , wide : /^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i , } ; const parseEraPatterns = { any : [ /^ÎC/i , /^DC/i ] as const , wide : [ /^(Înainte de Cristos|Înaintea erei noastre)/i , /^(După Cristos|Era noastră)/i , ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^T[1234]/i , wide : /^trimestrul [1234]/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[ifmaasond]/i , abbreviated : /^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i , wide : /^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i , } ; const parseMonthPatterns = { narrow : [ /^i/i , /^f/i , /^m/i , /^a/i , /^m/i , /^i/i , /^i/i , /^a/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , any : [ /^ia/i , /^f/i , /^mar/i , /^ap/i , /^mai/i , /^iun/i , /^iul/i , /^au/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[dlmjvs]/i , short : /^(d|l|ma|mi|j|v|s)/i , abbreviated : /^(dum|lun|mar|mie|jo|vi|sâ)/i , wide : /^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i , } ; const parseDayPatterns = { narrow : [ /^d/i , /^l/i , /^m/i , /^m/i , /^j/i , /^v/i , /^s/i ] as const , any : [ /^d/i , /^l/i , /^ma/i , /^mi/i , /^j/i , /^v/i , /^s/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i , any : /^([ap]\.?\s?m\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^mn/i , noon : /amiaza/i , morning : /dimineaţa/i , afternoon : /după-amiaza/i , evening : /seara/i , night : /noaptea/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 ;