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 = { abbreviated : /^(pr\. n\. št\.|po n\. št\.)/i , wide : /^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i , } ; const parseEraPatterns = { any : [ /^pr/i , /^(po|na[sš]em)/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^[1234]\.\s?[čc]et\.?/i , wide : /^[1234]\. [čc]etrtletje/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\.|avg\.|sep\.|okt\.|nov\.|dec\.)/i , wide : /^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/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 , abbreviated : [ /^ja/i , /^fe/i , /^mar/i , /^ap/i , /^maj/i , /^jun/i , /^jul/i , /^av/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , wide : [ /^ja/i , /^fe/i , /^mar/i , /^ap/i , /^maj/i , /^jun/i , /^jul/i , /^av/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[nptsčc]/i , short : /^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i , abbreviated : /^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i , wide : /^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i , } ; const parseDayPatterns = { narrow : [ /^n/i , /^p/i , /^t/i , /^s/i , /^[cč]/i , /^p/i , /^s/i ] as const , any : [ /^n/i , /^po/i , /^t/i , /^sr/i , /^[cč]/i , /^pe/i , /^so/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(d|po?|z?v|n|z?j|24\.00|12\.00)/i , any : /^(dop\.|pop\.|o?poln(\.|o[cč]i?)|o?pold(\.|ne)|z?ve[cč](\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\.|ro)|zjut(\.|raj))/i , } ; const parseDayPeriodPatterns = { narrow : { am : /^d/i , pm : /^p/i , midnight : /^24/i , noon : /^12/i , morning : /^(z?j)/i , afternoon : /^p/i , evening : /^(z?v)/i , night : /^(n|po)/i , } , any : { am : /^dop\./i , pm : /^pop\./i , midnight : /^o?poln/i , noon : /^o?pold/i , morning : /j/i , afternoon : /^pop\./i , evening : /^z?ve/i , night : /(po)?no/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 : 'wide' , } ) , day : buildMatchFn ( { matchPatterns : matchDayPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseDayPatterns , defaultParseWidth : 'any' , } ) , dayPeriod : buildMatchFn ( { matchPatterns : matchDayPeriodPatterns , defaultMatchWidth : 'any' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;