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 : /^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i , abbreviated : /^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i , wide : /^(przed\s*nasz(ą|a)\s*er(ą|a)|naszej\s*ery)/i , } ; const parseEraPatterns = { any : [ /^p/i , /^n/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^(I|II|III|IV)\s*kw\.?/i , wide : /^(I|II|III|IV)\s*kwarta(ł|l)/i , } ; const parseQuarterPatterns = { narrow : [ /1/i , /2/i , /3/i , /4/i ] as const , any : [ /^I kw/i , /^II kw/i , /^III kw/i , /^IV kw/i ] as const , } ; const matchMonthPatterns = { narrow : /^[slmkcwpg]/i , abbreviated : /^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i , wide : /^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i , } ; const parseMonthPatterns = { narrow : [ /^s/i , /^l/i , /^m/i , /^k/i , /^m/i , /^c/i , /^l/i , /^s/i , /^w/i , /^p/i , /^l/i , /^g/i , ] as const , any : [ /^st/i , /^lu/i , /^mar/i , /^k/i , /^maj/i , /^c/i , /^lip/i , /^si/i , /^w/i , /^p/i , /^lis/i , /^g/i , ] as const , } ; const matchDayPatterns = { narrow : /^[npwścs]/i , short : /^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i , abbreviated : /^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\.?/i , wide : /^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i , } ; const parseDayPatterns = { narrow : [ /^n/i , /^p/i , /^w/i , /^ś/i , /^c/i , /^p/i , /^s/i ] as const , abbreviated : [ /^n/i , /^po/i , /^w/i , /^(ś|s)r/i , /^c/i , /^pt/i , /^so/i , ] as const , any : [ /^n/i , /^po/i , /^w/i , /^(ś|s)r/i , /^c/i , /^pi/i , /^so/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(^a$|^p$|pó(ł|l)n\.?|o\s*pó(ł|l)n\.?|po(ł|l)\.?|w\s*po(ł|l)\.?|po\s*po(ł|l)\.?|rano|wiecz\.?|noc|w\s*nocy)/i , any : /^(am|pm|pó(ł|l)noc|o\s*pó(ł|l)nocy|po(ł|l)udnie|w\s*po(ł|l)udnie|popo(ł|l)udnie|po\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\s*nocy)/i , } ; const parseDayPeriodPatterns = { narrow : { am : /^a$/i , pm : /^p$/i , midnight : /pó(ł|l)n/i , noon : /po(ł|l)/i , morning : /rano/i , afternoon : /po\s*po(ł|l)/i , evening : /wiecz/i , night : /noc/i , } , any : { am : /^am/i , pm : /^pm/i , midnight : /pó(ł|l)n/i , noon : /po(ł|l)/i , morning : /rano/i , afternoon : /po\s*po(ł|l)/i , evening : /wiecz/i , night : /noc/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 ;