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+)e?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^([fn]\.? ?K\.?)/ , abbreviated : /^([fn]\. ?Kr\.?)/ , wide : /^((foar|nei) Kristus)/ , } ; const parseEraPatterns = { any : [ /^f/ , /^n/ ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^K[1234]/i , wide : /^[1234]e fearnsjier/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jfmasond]/i , abbreviated : /^(jan.|feb.|mrt.|apr.|mai.|jun.|jul.|aug.|sep.|okt.|nov.|des.)/i , wide : /^(jannewaris|febrewaris|maart|april|maaie|juny|july|augustus|septimber|oktober|novimber|desimber)/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 : [ /^jan/i , /^feb/i , /^m(r|a)/i , /^apr/i , /^mai/i , /^jun/i , /^jul/i , /^aug/i , /^sep/i , /^okt/i , /^nov/i , /^des/i , ] as const , } ; const matchDayPatterns = { narrow : /^[smtwf]/i , short : /^(si|mo|ti|wo|to|fr|so)/i , abbreviated : /^(snein|moa|tii|woa|ton|fre|sneon)/i , wide : /^(snein|moandei|tiisdei|woansdei|tongersdei|freed|sneon)/i , } ; const parseDayPatterns = { narrow : [ /^s/i , /^m/i , /^t/i , /^w/i , /^t/i , /^f/i , /^s/i ] as const , any : [ /^sn/i , /^mo/i , /^ti/i , /^wo/i , /^to/i , /^fr/i , /^sn/i ] as const , } ; const matchDayPeriodPatterns = { any : /^(am|pm|middernacht|middeis|moarns|middei|jûns|nachts)/i , } ; const parseDayPeriodPatterns = { any : { am : /^am/i , pm : /^pm/i , midnight : /^middernacht/i , noon : /^middei/i , morning : /moarns/i , afternoon : /^middeis/i , evening : /jûns/i , night : /nachts/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 ;