/* eslint-disable eslint-comments/no-unlimited-disable */ /* eslint-disable */ // @ts-nocheck import type { Match } from '../../locale/types.ts'; import { ValueSetter } from './Setter.ts'; import type { ParseFlags, ParseResult, ParserOptions } from './types.ts'; export abstract class Parser { public abstract incompatibleTokens: string[] | '*'; public abstract priority: number; public subPriority?: number; public run( dateString: string, token: string, match: Match, options: ParserOptions, ): { setter: ValueSetter; rest: string } | null { const result = this.parse(dateString, token, match, options); if (!result) { return null; } return { setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority), rest: result.rest, }; } protected abstract parse(dateString: string, token: string, match: Match, options: ParserOptions): ParseResult; protected validate(_utcDate: DateType, _value: Value, _options: ParserOptions): boolean { return true; } protected abstract set( date: DateType, flags: ParseFlags, value: Value, options: ParserOptions, ): DateType | [DateType, ParseFlags]; } /* eslint-enable */