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+)(th|st|nd|rd)?/i ; const parseOrdinalNumberPattern = /\d+/i ; const matchEraPatterns = { narrow : /^(ម\.)?គស/i , abbreviated : /^(មុន)?គ\.ស/i , wide : /^(មុន|នៃ)គ្រិស្តសករាជ/i , } ; const parseEraPatterns = { any : [ /^(ម|មុន)គ\.?ស/i , /^(នៃ)?គ\.?ស/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^q[1234]/i , wide : /^(ត្រីមាស)(ទី)?\s?[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 , any : [ /^អា/i , /^ច/i , /^អ/i , /^ព/i , /^ព្រ/i , /^សុ/i , /^សៅ/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(ព្រឹក|ល្ងាច|ពេលព្រឹក|ពេលថ្ងៃត្រង់|ពេលល្ងាច|ពេលរសៀល|ពេលយប់|ពេលកណ្ដាលអធ្រាត្រ)/i , any : /^(ព្រឹក|ល្ងាច|ពេលព្រឹក|ពេលថ្ងៃត្រង់|ពេលល្ងាច|ពេលរសៀល|ពេលយប់|ពេលកណ្ដាលអធ្រាត្រ)/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 : 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 ;