jsturbo-number.js

/** @module num */

import str from './jsturbo-string'
import obj from './jsturbo-object'

/**
 * Convert a number to a formated string
 * @param  {number} number The number to be formated
 * @param  {number} options.decimalPlaces The number of decimal places of the output (optional)
 * @param  {string} options.decimalSeparator The character used as a decimal separator (default: '.')
 * @return {string} The formatted number
 */
function format (number, options) {
  options = options || {}
  var formatted = number.toString()
  if (options.decimalPlaces) {
    formatted = number.toFixed(options.decimalPlaces)
  }
  if (options.decimalSeparator) {
    formatted = formatted.replace(/\./, options.decimalSeparator)
  }
  return '' + formatted
}

/**
 * Test if a value is an integer
 * @param  {any} value to be tested
 * @return {Boolean} true if the paramter is an integer number
 */
function isInt (number) {
  return typeof number === 'number' && isFinite(number) && (number % 1 === 0)
};

/**
 * Test if a value is an number
 * @param  {any} value to be tested
 * @return {Boolean} true if the paramter is a number
 */
function isNumber (number) {
  return typeof number === 'number' && isFinite(number)
}

/**
 * Convert a value to a number
 * @param  {any}
 * @return {number}
 */
function toNumber (any) {
  if (obj.isEmpty(any)) return NaN
  return str.toNumber(any.toString())
};

const mainExport = {
  format: format,
  isInt: isInt,
  isNumber: isNumber,
  toNumber: toNumber
}

export default mainExport
module.exports = mainExport // for CommonJS compatibility