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+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(b|a)$/i , abbreviated : /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)$/i , wide : /^(bizim eradan əvvəl|bizim era)$/i , } ; const parseEraPatterns = { any : [ /^b$/i , /^(a|c)$/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]$/i , abbreviated : /^K[1234]$/i , wide : /^[1234](ci)? kvartal$/i , } ; const parseQuarterPatterns = { any : [ /1/i , /2/i , /3/i , /4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[(?-i)yfmaisond]$/i , abbreviated : /^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i , wide : /^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i , } ; const parseMonthPatterns = { narrow : [ /^[(?-i)y]$/i , /^[(?-i)f]$/i , /^[(?-i)m]$/i , /^[(?-i)a]$/i , /^[(?-i)m]$/i , /^[(?-i)i]$/i , /^[(?-i)i]$/i , /^[(?-i)a]$/i , /^[(?-i)s]$/i , /^[(?-i)o]$/i , /^[(?-i)n]$/i , /^[(?-i)d]$/i , ] as const , abbreviated : [ /^Yan$/i , /^Fev$/i , /^Mar$/i , /^Apr$/i , /^May$/i , /^İyun$/i , /^İyul$/i , /^Avg$/i , /^Sen$/i , /^Okt$/i , /^Noy$/i , /^Dek$/i , ] as const , wide : [ /^Yanvar$/i , /^Fevral$/i , /^Mart$/i , /^Aprel$/i , /^May$/i , /^İyun$/i , /^İyul$/i , /^Avgust$/i , /^Sentyabr$/i , /^Oktyabr$/i , /^Noyabr$/i , /^Dekabr$/i , ] as const , } ; const matchDayPatterns = { narrow : /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i , short : /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i , abbreviated : /^(Baz\.e|Çər|Çər\.a|Cüm|Cüm\.a|Şə)$/i , wide : /^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i , } ; const parseDayPatterns = { narrow : [ /^B\.$/i , /^B\.e$/i , /^Ç\.a$/i , /^Ç\.$/i , /^C\.a$/i , /^C\.$/i , /^Ş\.$/i , ] as const , abbreviated : [ /^Baz$/i , /^Baz\.e$/i , /^Çər\.a$/i , /^Çər$/i , /^Cüm\.a$/i , /^Cüm$/i , /^Şə$/i , ] as const , wide : [ /^Bazar$/i , /^Bazar ertəsi$/i , /^Çərşənbə axşamı$/i , /^Çərşənbə$/i , /^Cümə axşamı$/i , /^Cümə$/i , /^Şənbə$/i , ] as const , any : [ /^B\.$/i , /^B\.e$/i , /^Ç\.a$/i , /^Ç\.$/i , /^C\.a$/i , /^C\.$/i , /^Ş\.$/i , ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i , any : /^(am|pm|a\.m\.|p\.m\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i , } ; const parseDayPeriodPatterns = { any : { am : /^a$/i , pm : /^p$/i , midnight : /^gecəyarı$/i , noon : /^gün$/i , morning : /səhər$/i , afternoon : /gündüz$/i , evening : /axşam$/i , night : /gecə$/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 : 'narrow' , } ) , day : buildMatchFn ( { matchPatterns : matchDayPatterns , defaultMatchWidth : 'wide' , parsePatterns : parseDayPatterns , defaultParseWidth : 'any' , } ) , dayPeriod : buildMatchFn ( { matchPatterns : matchDayPeriodPatterns , defaultMatchWidth : 'any' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;