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 : /^(B\.?C\.?|A\.?D\.?)/i , abbreviated : /^(きげん[前後]|せいれき)/i , wide : /^(きげん[前後]|せいれき)/i , } ; const parseEraPatterns = { narrow : [ /^B/i , /^A/i ] as const , any : [ /^(きげんぜん)/i , /^(せいれき|きげんご)/i ] as const , } ; const matchQuarterPatterns = { narrow : /^[1234]/i , abbreviated : /^Q[1234]/i , wide : /^だい[1234一二三四１２３４]しはんき/i , } ; const parseQuarterPatterns = { any : [ /(1|一|１)/i , /(2|二|２)/i , /(3|三|３)/i , /(4|四|４)/i ] as const , } ; const matchMonthPatterns = { narrow : /^([123456789]|1[012])/ , abbreviated : /^([123456789]|1[012])がつ/i , wide : /^([123456789]|1[012])がつ/i , } ; const parseMonthPatterns = { any : [ /^1\D/ , /^2/ , /^3/ , /^4/ , /^5/ , /^6/ , /^7/ , /^8/ , /^9/ , /^10/ , /^11/ , /^12/ , ] as const , } ; const matchDayPatterns = { narrow : /^(にち|げつ|か|すい|もく|きん|ど)/ , short : /^(にち|げつ|か|すい|もく|きん|ど)/ , abbreviated : /^(にち|げつ|か|すい|もく|きん|ど)/ , wide : /^(にち|げつ|か|すい|もく|きん|ど)ようび/ , } ; const parseDayPatterns = { any : [ /^にち/ , /^げつ/ , /^か/ , /^すい/ , /^もく/ , /^きん/ , /^ど/ ] as const , } ; const matchDayPeriodPatterns = { any : /^(AM|PM|ごぜん|ごご|しょうご|しんや|まよなか|よる|あさ)/i , } ; const parseDayPeriodPatterns = { any : { am : /^(A|ごぜん)/i , pm : /^(P|ごご)/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 ;