@phensley/cldr-core
Version:
Core library for @phensley/cldr
107 lines (106 loc) • 5.04 kB
TypeScript
import { CalendarSchema, TimeZoneSchema, Vector2Arrow } from '@phensley/cldr-schema';
import { Bundle, WrapperInternals } from '../..';
import { Internals } from '../internals';
import { CalendarDate } from '../../systems/calendars';
import { NumberingSystem } from '../../systems/numbering';
import { DateTimeNode } from '../../parsing/patterns/date';
import { Renderer } from '../../utils/render';
/**
* All context needed for a single format operation.
*/
export interface CalendarContext<T extends CalendarDate> {
/**
* Calendar-specific date
*/
date: T;
/**
* Resource bundle for accessing strings
*/
bundle: Bundle;
/**
* Numbering system for formatting decimal numbers into strings
*/
system: NumberingSystem;
/**
* Latin decimal digit numbering system.
*/
latnSystem: NumberingSystem;
}
export declare class CalendarFormatter<T extends CalendarDate> {
readonly internals: Internals;
readonly cal: CalendarSchema;
readonly wrapper: WrapperInternals;
readonly tz: TimeZoneSchema;
constructor(internals: Internals, cal: CalendarSchema);
format<R>(rnd: Renderer<R>, ctx: CalendarContext<T>, nodes: DateTimeNode[]): void;
/**
* Format a number using the main numbering system, with the given minimum integers.
*/
_num(ctx: CalendarContext<T>, n: number, minInt: number): string;
era(ctx: CalendarContext<T>, width: number): string;
year(ctx: CalendarContext<T>, width: number): string;
yearOfWeekYear(ctx: CalendarContext<T>, width: number): string;
extendedYear(ctx: CalendarContext<T>, width: number): string;
/**
* Cyclic year.
*/
cyclicYear(ctx: CalendarContext<T>, width: number): string;
/**
* Related Gregorian year.
*/
relatedYear(ctx: CalendarContext<T>, width: number): string;
_year(ctx: CalendarContext<T>, year: number, width: number): string;
_formatQuarterOrMonth(ctx: CalendarContext<T>, format: Vector2Arrow<string, string>, value: number, width: number): string;
quarter(ctx: CalendarContext<T>, node: [string, number]): string;
month(ctx: CalendarContext<T>, node: [string, number]): string;
weekOfWeekYear(ctx: CalendarContext<T>, node: [string, number]): string;
weekOfMonth(ctx: CalendarContext<T>, node: [string, number]): string;
dayOfMonth(ctx: CalendarContext<T>, node: [string, number]): string;
dayOfYear(ctx: CalendarContext<T>, node: [string, number]): string;
dayOfWeekInMonth(ctx: CalendarContext<T>, node: [string, number]): string;
modifiedJulianDay(ctx: CalendarContext<T>, node: [string, number]): string;
weekday(ctx: CalendarContext<T>, node: [string, number]): string;
weekdayLocal(ctx: CalendarContext<T>, node: [string, number]): string;
weekdayLocalStandalone(ctx: CalendarContext<T>, node: [string, number]): string;
_weekday(bundle: Bundle, format: Vector2Arrow<string, string>, date: CalendarDate, width: number): string;
_weekdayLocal(ctx: CalendarContext<T>, node: [string, number], standAlone: boolean): string;
dayPeriod(ctx: CalendarContext<T>, node: [string, number]): string;
dayPeriodExt(ctx: CalendarContext<T>, node: [string, number]): string;
dayPeriodFlex(ctx: CalendarContext<T>, node: [string, number]): string;
hour(ctx: CalendarContext<T>, node: [string, number]): string;
hourAlt(ctx: CalendarContext<T>, node: [string, number]): string;
minute(ctx: CalendarContext<T>, node: [string, number]): string;
second(ctx: CalendarContext<T>, node: [string, number]): string;
fractionalSecond(ctx: CalendarContext<T>, node: [string, number]): string;
millisInDay(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: short/long specific non-location format.
* https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone
*/
timezone_z(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: ISO8601 basic/extended format, long localized GMT format.
* https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone
*/
timezone_Z(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: short/long localized GMT format.
*/
timezone_O(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: short/long generic non-location format.
*/
timezone_v(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: short/long zone ID, exemplar city, generic location format.
* https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone
*/
timezone_V(ctx: CalendarContext<T>, node: [string, number]): string;
/**
* Timezone: ISO8601 basic format
* https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone
*/
timezone_x(ctx: CalendarContext<T>, node: [string, number]): string;
_wrapGMT(ctx: CalendarContext<T>, short: boolean): string;
_hourPattern(bundle: Bundle, negative: boolean): DateTimeNode[];
}