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+)[ºªo]?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(ac|dc|a|d)/i , abbreviated : /^(a\.?\s?c\.?|d\.?\s?c\.?)/i , wide : /^(antes de cristo|depois de cristo)/i , } ; const parseEraPatterns = { any : [ /^ac/i , /^dc/i ] as const , wide : [ /^antes de cristo/i , /^depois de cristo/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^T[1234]/i , wide : /^[1234](º)? trimestre/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jfmajsond]/i , abbreviated : /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i , wide : /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/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 , /^fev/i , /^mar/i , /^abr/i , /^mai/i , /^jun/i , /^jul/i , /^ago/i , /^set/i , /^out/i , /^nov/i , /^dez/i , ] as const , } ; const matchDayPatterns = { narrow : /^(dom|[23456]ª?|s[aá]b)/i , short : /^(dom|[23456]ª?|s[aá]b)/i , abbreviated : /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i , wide : /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i , } ; const parseDayPatterns = { short : [ /^d/i , /^2/i , /^3/i , /^4/i , /^5/i , /^6/i , /^s[aá]/i ] as const , narrow : [ /^d/i , /^2/i , /^3/i , /^4/i , /^5/i , /^6/i , /^s[aá]/i ] as const , any : [ /^d/i , /^seg/i , /^t/i , /^qua/i , /^qui/i , /^sex/i , /^s[aá]b/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(a|p|mn|md|(da) (manhã|tarde|noite))/i , any : /^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^mn|^meia[-\s]noite/i , noon : /^md|^meio[-\s]dia/i , morning : /manhã/i , afternoon : /tarde/i , evening : /tarde/i , night : /noite/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 ;