import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index' ; import buildMatchFn from '../../../_lib/buildMatchFn/index' ; import type { Match } from '../../../types' ; import type { Quarter } from '../../../../types' ; const matchOrdinalNumberPattern = /^(\d+)(-?a)?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^([ap]k)/i , abbreviated : /^([ap]\.?\s?k\.?\s?e\.?)/i , wide : /^((antaǔ |post )?komuna erao)/i , } ; const parseEraPatterns = { any : [ /^a/i , /^[kp]/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^k[1234]/i , wide : /^[1234](-?a)? kvaronjaro/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jfmasond]/i , abbreviated : /^(jan|feb|mar|apr|maj|jun|jul|a(ŭ|ux|uh|u)g|sep|okt|nov|dec)/i , wide : /^(januaro|februaro|marto|aprilo|majo|junio|julio|a(ŭ|ux|uh|u)gusto|septembro|oktobro|novembro|decembro)/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 , /^ap/i , /^maj/i , /^jun/i , /^jul/i , /^a(u|ŭ)/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[dlmĵjvs]/i , short : /^(di|lu|ma|me|(ĵ|jx|jh|j)a|ve|sa)/i , abbreviated : /^(dim|lun|mar|mer|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)|ven|sab)/i , wide : /^(diman(ĉ|cx|ch|c)o|lundo|mardo|merkredo|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)do|vendredo|sabato)/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 , /^me/i , /^(j|ĵ)/i , /^v/i , /^s/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^([ap]|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i , abbreviated : /^([ap][.\s]?t[.\s]?m[.\s]?|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i , wide : /^(anta(ŭ|ux)tagmez|posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo]/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^noktom/i , noon : /^t/i , morning : /^m/i , afternoon : /^posttagmeze/i , evening : /^v/i , night : /^n/i , } , } ; const match = { ordinalNumber : buildMatchPatternFn ( { matchPattern : matchOrdinalNumberPattern , parsePattern : parseOrdinalNumberPattern , valueCallback : function ( value ) { return parseInt ( value , 10 ) ; } , } ) , era : buildMatchFn ( { matchPatterns : matchEraPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseEraPatterns , defaultParseWidth : 'any' , } ) , quarter : buildMatchFn ( { matchPatterns : matchQuarterPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseQuarterPatterns , defaultParseWidth : 'any' , valueCallback : function ( index ) { return ( 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 : 'wide' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;