/* eslint-disable eslint-comments/no-unlimited-disable */ /* eslint-disable */ // @ts-nocheck import type { Match } from '../../../locale/types.ts'; import { numericPatterns } from '../constants.ts'; import { Parser } from '../Parser.ts'; import type { ParseFlags, ParseResult } from '../types.ts'; import { parseNDigits, parseNumericPattern } from '../utils.ts'; export class Hour1to12Parser extends Parser { priority = 70; parse(dateString: string, token: string, match: Match): ParseResult { switch (token) { case 'h': return parseNumericPattern(numericPatterns.hour12h, dateString); case 'ho': return match.ordinalNumber(dateString, { unit: 'hour' }); default: return parseNDigits(token.length, dateString); } } validate(_date: DateType, value: number): boolean { return value >= 1 && value <= 12; } set(date: DateType, _flags: ParseFlags, value: number): DateType { const isPM = date.getHours() >= 12; if (isPM && value < 12) { date.setHours(value + 12, 0, 0, 0); } else if (!isPM && value === 12) { date.setHours(0, 0, 0, 0); } else { date.setHours(value, 0, 0, 0); } return date; } incompatibleTokens: string[] = ['H', 'K', 'k', 't', 'T']; } /* eslint-enable */