import { GetNumberOption } from '../GetNumberOption'; import { DefaultNumberOption } from '../DefaultNumberOption'; /** * https://tc39.es/ecma402/#sec-setnfdigitoptions */ export function SetNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) { var mnid = GetNumberOption(opts, 'minimumIntegerDigits', 1, 21, 1); var mnfd = opts.minimumFractionDigits; var mxfd = opts.maximumFractionDigits; var mnsd = opts.minimumSignificantDigits; var mxsd = opts.maximumSignificantDigits; internalSlots.minimumIntegerDigits = mnid; if (mnsd !== undefined || mxsd !== undefined) { internalSlots.roundingType = 'significantDigits'; mnsd = DefaultNumberOption(mnsd, 1, 21, 1); mxsd = DefaultNumberOption(mxsd, mnsd, 21, 21); internalSlots.minimumSignificantDigits = mnsd; internalSlots.maximumSignificantDigits = mxsd; } else if (mnfd !== undefined || mxfd !== undefined) { internalSlots.roundingType = 'fractionDigits'; mnfd = DefaultNumberOption(mnfd, 0, 20, mnfdDefault); var mxfdActualDefault = Math.max(mnfd, mxfdDefault); mxfd = DefaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault); internalSlots.minimumFractionDigits = mnfd; internalSlots.maximumFractionDigits = mxfd; } else if (notation === 'compact') { internalSlots.roundingType = 'compactRounding'; } else { internalSlots.roundingType = 'fractionDigits'; internalSlots.minimumFractionDigits = mnfdDefault; internalSlots.maximumFractionDigits = mxfdDefault; } }