| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { BadOptionError, MissingOptionError, TooManyOptionsError } from '../errors.js';
- const maxOptions = {
- 'compact-short': 0,
- 'compact-long': 0,
- 'notation-simple': 0,
- scientific: 2,
- engineering: 2,
- percent: 0,
- permille: 0,
- 'base-unit': 0,
- currency: 1,
- 'measure-unit': 1,
- 'per-measure-unit': 1,
- 'unit-width-narrow': 0,
- 'unit-width-short': 0,
- 'unit-width-full-name': 0,
- 'unit-width-iso-code': 0,
- 'unit-width-hidden': 0,
- 'precision-integer': 0,
- 'precision-unlimited': 0,
- 'precision-currency-standard': 1,
- 'precision-currency-cash': 0,
- 'precision-increment': 1,
- 'rounding-mode-ceiling': 0,
- 'rounding-mode-floor': 0,
- 'rounding-mode-down': 0,
- 'rounding-mode-up': 0,
- 'rounding-mode-half-even': 0,
- 'rounding-mode-half-down': 0,
- 'rounding-mode-half-up': 0,
- 'rounding-mode-unnecessary': 0,
- 'integer-width': 1,
- scale: 1,
- 'group-off': 0,
- 'group-min2': 0,
- 'group-auto': 0,
- 'group-on-aligned': 0,
- 'group-thousands': 0,
- latin: 0,
- 'numbering-system': 1,
- 'sign-auto': 0,
- 'sign-always': 0,
- 'sign-never': 0,
- 'sign-accounting': 0,
- 'sign-accounting-always': 0,
- 'sign-except-zero': 0,
- 'sign-accounting-except-zero': 0,
- 'decimal-auto': 0,
- 'decimal-always': 0
- };
- const minOptions = {
- currency: 1,
- 'integer-width': 1,
- 'measure-unit': 1,
- 'numbering-system': 1,
- 'per-measure-unit': 1,
- 'precision-increment': 1,
- scale: 1
- };
- function hasMaxOption(stem) {
- return stem in maxOptions;
- }
- function hasMinOption(stem) {
- return stem in minOptions;
- }
- /** @internal */
- export function validOptions(stem, options, onError) {
- if (hasMaxOption(stem)) {
- const maxOpt = maxOptions[stem];
- if (options.length > maxOpt) {
- if (maxOpt === 0) {
- for (const opt of options)
- onError(new BadOptionError(stem, opt));
- }
- else {
- onError(new TooManyOptionsError(stem, options, maxOpt));
- }
- return false;
- }
- else if (hasMinOption(stem) && options.length < minOptions[stem]) {
- onError(new MissingOptionError(stem));
- return false;
- }
- }
- return true;
- }
|