import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index' ; import buildMatchFn from '../../../_lib/buildMatchFn/index' ; import type { Quarter } from '../../../../types' ; import type { Match } from '../../../types' ; const matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(ق|ب)/i , abbreviated : /^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\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 , any : [ /^ين/i , /^فب/i , /^مار/i , /^أب/i , /^ماي/i , /^يون/i , /^يول/i , /^غشت/i , /^ش/i , /^أك/i , /^ن/i , /^د/i , ] as const , } ; const matchDayPatterns = { narrow : /^[حنثرخجس]/i , short : /^(أحد|إثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i , abbreviated : /^(أحد|إثن|ثلا|أرب|خمي|جمعة|سبت)/i , wide : /^(الأحد|الإثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i , } ; const parseDayPatterns = { narrow : [ /^ح/i , /^ن/i , /^ث/i , /^ر/i , /^خ/i , /^ج/i , /^س/i ] as const , wide : [ /^الأحد/i , /^الإثنين/i , /^الثلاثاء/i , /^الأربعاء/i , /^الخميس/i , /^الجمعة/i , /^السبت/i , ] as const , any : [ /^أح/i , /^إث/i , /^ث/i , /^أر/i , /^خ/i , /^ج/i , /^س/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i , any : /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^p/i , midnight : /^mi/i , noon : /^no/i , morning : /morning/i , afternoon : /afternoon/i , evening : /evening/i , night : /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 ) => ( Number ( 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 ;