messageformat-number-skeleton
Version:
A parser & formatter for ICU NumberFormat skeleton strings & patterns
68 lines (67 loc) • 2.56 kB
TypeScript
import { Unit } from './unit.js';
/**
* An object representation of a parsed string skeleton, with token values
* grouped by type.
*
* @public
*/
export interface Skeleton {
/**
* @remarks
* The prefix and suffix of an ICU NumberFormatter pattern. Not used for skeletons.
*/
affix?: {
pos: [string, string];
neg?: [string, string];
};
decimal?: 'decimal-auto' | 'decimal-always';
group?: 'group-off' | 'group-min2' | 'group-auto' | 'group-on-aligned' | 'group-thousands';
integerWidth?: {
min: number;
max?: number;
source?: string;
};
notation?: {
style: 'compact-short' | 'compact-long' | 'notation-simple';
} | {
style: 'scientific' | 'engineering';
expDigits?: number;
expSign?: Skeleton['sign'];
source?: string;
};
/**
* @remarks
* List collected from
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat | MDN documentation}
*/
numberingSystem?: 'arab' | 'arabext' | 'bali' | 'beng' | 'deva' | 'fullwide' | 'gujr' | 'guru' | 'hanidec' | 'khmr' | 'knda' | 'laoo' | 'latn' | 'limb' | 'mlym' | 'mong' | 'mymr' | 'orya' | 'tamldec' | 'telu' | 'thai' | 'tibt';
precision?: {
style: 'precision-integer' | 'precision-unlimited' | 'precision-currency-standard' | 'precision-currency-cash';
} | {
style: 'precision-increment';
increment: number;
} | {
style: 'precision-fraction';
minFraction?: number;
maxFraction?: number;
minSignificant?: number;
maxSignificant?: number;
source?: string;
};
roundingMode?: 'rounding-mode-ceiling' | 'rounding-mode-floor' | 'rounding-mode-down' | 'rounding-mode-up' | 'rounding-mode-half-even' | 'rounding-mode-half-down' | 'rounding-mode-half-up' | 'rounding-mode-unnecessary';
scale?: number;
sign?: 'sign-auto' | 'sign-always' | 'sign-never' | 'sign-accounting' | 'sign-accounting-always' | 'sign-except-zero' | 'sign-accounting-except-zero';
unit?: {
style: 'percent' | 'permille' | 'base-unit';
} | {
style: 'currency';
currency: string;
} | {
style: 'measure-unit';
unit: Unit;
};
unitPer?: Unit;
unitWidth?: 'unit-width-narrow' | 'unit-width-short' | 'unit-width-full-name' | 'unit-width-iso-code' | 'unit-width-hidden';
}
/** @internal */
export declare function isNumberingSystem(ns: string): ns is string & Skeleton['numberingSystem'];