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 : /^(e\.m\.a|m\.a\.j|eKr|pKr)/i , abbreviated : /^(e\.m\.a|m\.a\.j|eKr|pKr)/i , wide : /^(enne meie ajaarvamist|meie ajaarvamise järgi|enne Kristust|pärast Kristust)/i , } ; const parseEraPatterns = { any : [ /^e/i , /^(m|p)/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^K[1234]/i , wide : /^[1234](\.)? kvartal/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jvmasond]/i , abbreviated : /^(jaan|veebr|märts|apr|mai|juuni|juuli|aug|sept|okt|nov|dets)/i , wide : /^(jaanuar|veebruar|märts|aprill|mai|juuni|juuli|august|september|oktoober|november|detsember)/i , } ; const parseMonthPatterns = { narrow : [ /^j/i , /^v/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 , /^v/i , /^mär/i , /^ap/i , /^mai/i , /^juun/i , /^juul/i , /^au/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[petknrl]/i , short : /^[petknrl]/i , abbreviated : /^(püh?|esm?|tei?|kolm?|nel?|ree?|laup?)\.?/i , wide : /^(pühapäev|esmaspäev|teisipäev|kolmapäev|neljapäev|reede|laupäev)/i , } ; const parseDayPatterns = { any : [ /^p/i , /^e/i , /^t/i , /^k/i , /^n/i , /^r/i , /^l/i ] as const , } ; const matchDayPeriodPatterns = { any : /^(am|pm|keskööl?|keskpäev(al)?|hommik(ul)?|pärastlõunal?|õhtul?|öö(sel)?)/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^keskö/i , noon : /^keskp/i , morning : /hommik/i , afternoon : /pärastlõuna/i , evening : /õhtu/i , night : /öö/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 ;