import type { Match } from '../../../types' ; import type { Quarter } 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 : /^(mö|ms)/i , abbreviated : /^(mö|ms)/i , wide : /^(milattan önce|milattan sonra)/i , } ; const parseEraPatterns = { any : [ /(^mö|^milattan önce)/i , /(^ms|^milattan sonra)/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^[1234]ç/i , wide : /^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , abbreviated : [ /1ç/i , /2ç/i , /3ç/i , /4ç/i ] as const , wide : [ /^(i|İ)lk çeyrek/i , /(i|İ)kinci çeyrek/i , /üçüncü çeyrek/i , /son çeyrek/i , ] as const , } ; const matchMonthPatterns = { narrow : /^[oşmnhtaek]/i , abbreviated : /^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i , wide : /^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i , } ; const parseMonthPatterns = { narrow : [ /^o/i , /^ş/i , /^m/i , /^n/i , /^m/i , /^h/i , /^t/i , /^a/i , /^e/i , /^e/i , /^k/i , /^a/i , ] as const , any : [ /^o/i , /^ş/i , /^mar/i , /^n/i , /^may/i , /^h/i , /^t/i , /^ağ/i , /^ey/i , /^ek/i , /^k/i , /^ar/i , ] as const , } ; const matchDayPatterns = { narrow : /^[psçc]/i , short : /^(pz|pt|sa|ça|pe|cu|ct)/i , abbreviated : /^(paz|pzt|sal|çar|per|cum|cts)/i , wide : /^(pazar|pazartesi|salı|çarşamba|perşembe|cuma|cumartesi)/i , } ; const parseDayPatterns = { narrow : [ /^p/i , /^p/i , /^s/i , /^ç/i , /^p/i , /^c/i , /^c/i ] as const , any : [ /^pz/i , /^pt/i , /^sa/i , /^ça/i , /^pe/i , /^cu/i , /^ct/i ] as const , wide : [ /^pazar/i , /^pazartesi/i , /^salı/i , /^çarşamba/i , /^perşembe/i , /^cuma/i , /cumartesi/i , ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(öö|ös|gy|ö|sa|ös|ak|ge)/i , any : /^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i , } ; const parseDayPeriodPatterns = { any : { am : /^ö\.?ö\.?/i , pm : /^ö\.?s\.?/i , midnight : /^(gy|gece yarısı)/i , noon : /^öğ/i , morning : /^sa/i , afternoon : /^öğleden sonra/i , evening : /^ak/i , night : /^ge/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 : ( 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 ;