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 : /^((б )?з\.?\s?д\.?)/i , abbreviated : /^((б )?з\.?\s?д\.?)/i , wide : /^(біздің заманымызға дейін|біздің заманымыз|біздің заманымыздан)/i , } ; const parseEraPatterns = { any : [ /^б/i , /^з/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^[1234](-?ші)? тоқ.?/i , wide : /^[1234](-?ші)? тоқсан/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^(қ|а|н|с|м|мау|ш|т|қыр|қаз|қар|ж)/i , abbreviated : /^(қаң|ақп|нау|сәу|мам|мау|шіл|там|қыр|қаз|қар|жел)/i , wide : /^(қаңтар|ақпан|наурыз|сәуір|мамыр|маусым|шілде|тамыз|қыркүйек|қазан|қараша|желтоқсан)/i , } ; const parseMonthPatterns = { narrow : [ /^қ/i , /^а/i , /^н/i , /^с/i , /^м/i , /^м/i , /^ш/i , /^т/i , /^қ/i , /^қ/i , /^қ/i , /^ж/i , ] as const , abbreviated : [ /^қаң/i , /^ақп/i , /^нау/i , /^сәу/i , /^мам/i , /^мау/i , /^шіл/i , /^там/i , /^қыр/i , /^қаз/i , /^қар/i , /^жел/i , ] as const , any : [ /^қ/i , /^а/i , /^н/i , /^с/i , /^м/i , /^м/i , /^ш/i , /^т/i , /^қ/i , /^қ/i , /^қ/i , /^ж/i , ] as const , } ; const matchDayPatterns = { narrow : /^(ж|д|с|с|б|ж|с)/i , short : /^(жс|дс|сс|ср|бс|жм|сб)/i , wide : /^(жексенбі|дүйсенбі|сейсенбі|сәрсенбі|бейсенбі|жұма|сенбі)/i , } ; const parseDayPatterns = { narrow : [ /^ж/i , /^д/i , /^с/i , /^с/i , /^б/i , /^ж/i , /^с/i ] as const , short : [ /^жс/i , /^дс/i , /^сс/i , /^ср/i , /^бс/i , /^жм/i , /^сб/i ] as const , any : [ /^ж[ек]/i , /^д[үй]/i , /^сe[й]/i , /^сә[р]/i , /^б[ей]/i , /^ж[ұм]/i , /^се[н]/i , ] as const , } ; const matchDayPeriodPatterns = { narrow : /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i , wide : /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i , any : /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i , } ; const parseDayPeriodPatterns = { any : { am : /^ТД/i , pm : /^ТК/i , midnight : /^түн орта/i , noon : /^күндіз/i , morning : /таң/i , afternoon : /түс/i , evening : /кеш/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 : 'wide' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;