import type { Quarter } from '../../../../types' ; import type { Match } from '../../../types' ; import buildMatchFn from '../../../_lib/buildMatchFn/index' ; import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index' ; const matchOrdinalNumberPattern = /^ke-(\d+)?/i ; const parseOrdinalNumberPattern = /petama|\d+/i ; const matchEraPatterns = { narrow : /^(sm|m)/i , abbreviated : /^(s\.?\s?m\.?|m\.?)/i , wide : /^(sebelum masihi|masihi)/i , } ; const parseEraPatterns = { any : [ /^s/i , /^(m)/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^S[1234]/i , wide : /Suku (pertama|kedua|ketiga|keempat)/i , } ; const parseQuarterPatterns = { any : [ /pertama|1/i , /kedua|2/i , /ketiga|3/i , /keempat|4/i ] as const , } ; const matchMonthPatterns = { narrow : /^[jfmasond]/i , abbreviated : /^(jan|feb|mac|apr|mei|jun|jul|ogo|sep|okt|nov|dis)/i , wide : /^(januari|februari|mac|april|mei|jun|julai|ogos|september|oktober|november|disember)/i , } ; const parseMonthPatterns = { narrow : [ /^j/i , /^f/i , /^m/i , /^a/i , /^m/i , /^j/i , /^j/i , /^o/i , /^s/i , /^o/i , /^n/i , /^d/i , ] as const , any : [ /^ja/i , /^f/i , /^ma/i , /^ap/i , /^me/i , /^jun/i , /^jul/i , /^og/i , /^s/i , /^ok/i , /^n/i , /^d/i , ] as const , } ; const matchDayPatterns = { narrow : /^[aisrkj]/i , short : /^(ahd|isn|sel|rab|kha|jum|sab)/i , abbreviated : /^(ahd|isn|sel|rab|kha|jum|sab)/i , wide : /^(ahad|isnin|selasa|rabu|khamis|jumaat|sabtu)/i , } ; const parseDayPatterns = { narrow : [ /^a/i , /^i/i , /^s/i , /^r/i , /^k/i , /^j/i , /^s/i ] as const , any : [ /^a/i , /^i/i , /^se/i , /^r/i , /^k/i , /^j/i , /^sa/i ] as const , } ; const matchDayPeriodPatterns = { narrow : /^(am|pm|tengah malam|tengah hari|pagi|petang|malam)/i , any : /^([ap]\.?\s?m\.?|tengah malam|tengah hari|pagi|petang|malam)/i , } ; const parseDayPeriodPatterns = { any : { am : /^a/i , pm : /^pm/i , midnight : /^tengah m/i , noon : /^tengah h/i , morning : /pa/i , afternoon : /tengah h/i , evening : /pe/i , night : /m/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 : 'any' , parsePatterns : parseDayPeriodPatterns , defaultParseWidth : 'any' , } ) , } ; export default match ;