/** * Copyright (c) Shmulik Kravitz. * * This source code is licensed under the MIT license. * See the LICENSE file in the root directory for more information. * */ /** * Token definitions for pattern parsing. * Order matters - longer tokens must come first to avoid partial matches. */ declare const TOKEN_PATTERNS: readonly ["yyyy", "YYYY", "yy", "YY", "MMMM", "MM", "M", "dd", "D", "d"]; type TokenType = (typeof TOKEN_PATTERNS)[number]; /** * Represents the components needed for formatting a Jewish date. */ export interface FormatComponents { day: number; month: number; monthName: string; year: number; } /** * Formatter function type that converts a component to its string representation. */ type TokenFormatter = (components: FormatComponents) => string; /** * Creates formatters for Hebrew output. * Lowercase tokens (d, M, y) output numeric values. * Uppercase tokens (D, YY, YYYY) output Hebrew gematria. * MMMM outputs Hebrew month name. * @param convertToHebrew - Function to convert numbers to Hebrew gematria * @param getHebrewMonthName - Function to get Hebrew month name * @param getShortYearHebrew - Function to get short (2-letter) Hebrew year */ export declare const createHebrewFormatters: (convertToHebrew: (num: number) => string, getHebrewMonthName: (monthName: string) => string, getShortYearHebrew: (year: number) => string) => Record; /** * Formats a Jewish date using the given pattern and formatters. * @param pattern - The format pattern string (e.g., "d MMMM yyyy") * @param components - The date components to format * @param formatters - Token formatters to use * @returns The formatted date string */ export declare const formatWithPattern: (pattern: string, components: FormatComponents, formatters: Record) => string; /** * Default pattern for formatting Jewish dates (numeric). */ export declare const DEFAULT_PATTERN = "d MMMM yyyy"; /** * Default pattern for formatting Jewish dates in Hebrew (gematria). */ export declare const DEFAULT_PATTERN_HEBREW = "D MMMM YYYY"; /** * Gets the English formatters (singleton). */ export declare const getEnglishFormatters: Record<"yyyy" | "YYYY" | "yy" | "YY" | "MMMM" | "MM" | "M" | "dd" | "D" | "d", TokenFormatter>; export {};