lion/packages/localize/src/number/formatNumber.js

28 lines
1 KiB
JavaScript

import { localize } from '../localize.js';
import { formatNumberToParts } from './formatNumberToParts.js';
/**
* Formats a number based on locale and options. It uses Intl for the formatting.
*
* @param {number} number Number to be formatted
* @param {Object} options Intl options are available extended by roundMode
* @returns {*} Formatted number
*/
export function formatNumber(number, options) {
if (number === undefined || number === null) return '';
const formattedToParts = formatNumberToParts(number, options);
// If number is not a number
if (
formattedToParts === (options && options.returnIfNaN) ||
formattedToParts === localize.formatNumberOptions.returnIfNaN
) {
return formattedToParts;
}
let printNumberOfParts = '';
// update numberOfParts because there may be some parts added
const numberOfParts = formattedToParts && formattedToParts.length;
for (let i = 0; i < numberOfParts; i += 1) {
printNumberOfParts += formattedToParts[i].value;
}
return printNumberOfParts;
}