inr-utils
Version:
122 lines (106 loc) • 3.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.convertToUnit = exports.getUnitAndNumberMap = exports.UNITS = exports.ONE_CRORE = exports.ONE_LAKH = exports.ONE_THOUSAND = exports.ONE = exports.RoundingMode = undefined;
var _bigdecimal = require('bigdecimal');
var RoundingMode = exports.RoundingMode = {
ROUND_HALF_UP: _bigdecimal.BigDecimal.ROUND_HALF_UP,
ROUND_HALF_DOWN: _bigdecimal.BigDecimal.ROUND_HALF_DOWN,
ROUND_HALF_EVEN: _bigdecimal.BigDecimal.ROUND_HALF_EVEN,
ROUND_DOWN: _bigdecimal.BigDecimal.ROUND_DOWN,
ROUND_UP: _bigdecimal.BigDecimal.ROUND_UP,
ROUND_CEILING: _bigdecimal.BigDecimal.ROUND_CEILING,
ROUND_FLOOR: _bigdecimal.BigDecimal.ROUND_FLOOR
}; /*
* @Author: Sameer Ahmed
* @Url https://github.com/sameer-ahmed/inr-utils
*/
var ONE = exports.ONE = 1;
var ONE_THOUSAND = exports.ONE_THOUSAND = 1000 * ONE;
var ONE_LAKH = exports.ONE_LAKH = 100 * ONE_THOUSAND;
var ONE_CRORE = exports.ONE_CRORE = 100 * ONE_LAKH;
var UNITS = exports.UNITS = {
THOUSAND: {
key: 'THOUSAND',
title: 'Thousand',
suffix: 'Thousand',
divisor: ONE_THOUSAND
},
LAKH: {
key: 'LAKH',
title: 'Lac',
suffix: 'Lac',
divisor: ONE_LAKH
},
CRORE: {
key: 'CRORE',
title: 'Crore',
suffix: 'Cr',
divisor: ONE_CRORE
},
ONE: {
key: 'ONE',
title: 'none',
suffix: '',
divisor: ONE
}
};
var format = exports.format = function format(amount) {
var x = amount.toString();
var split = x.split('.');
x = split[0];
var lastThree = x.substring(x.length - 3);
var otherNumbers = x.substring(0, x.length - 3);
if (otherNumbers !== '') {
lastThree = ',' + lastThree;
}
var res = '' + otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree + (typeof split[1] === 'undefined' ? '' : '.' + split[1]);
return res;
};
var getUnitAndNumberMap = exports.getUnitAndNumberMap = function getUnitAndNumberMap(_ref) {
var _ref$amount = _ref.amount,
amount = _ref$amount === undefined ? '' : _ref$amount,
_ref$scale = _ref.scale,
scale = _ref$scale === undefined ? 2 : _ref$scale,
_ref$roundingMode = _ref.roundingMode,
roundingMode = _ref$roundingMode === undefined ? _bigdecimal.BigDecimal.ROUND_DOWN : _ref$roundingMode;
if (isNaN(amount)) {
throw new Error('Should be a valid number');
}
var number = Number(amount);
var divisor = void 0;
var unitKey = void 0;
var unit = void 0;
if (number >= ONE_CRORE) {
divisor = ONE_CRORE;
unit = UNITS.CRORE;
} else if (number >= ONE_LAKH) {
divisor = ONE_LAKH;
unit = UNITS.LAKH;
} else if (number >= ONE_THOUSAND) {
divisor = ONE_THOUSAND;
unit = UNITS.THOUSAND;
} else {
divisor = ONE;
unit = UNITS.ONE;
}
var bigDecimal = (0, _bigdecimal.BigDecimal)(number);
bigDecimal = bigDecimal.divide((0, _bigdecimal.BigDecimal)(divisor));
if (typeof scale !== 'undefined' && bigDecimal.setScale) {
bigDecimal = bigDecimal.setScale(scale, roundingMode);
}
return { number: Number(bigDecimal), unit: unit };
};
var convertToUnit = exports.convertToUnit = function convertToUnit(_ref2) {
var _ref2$amount = _ref2.amount,
amount = _ref2$amount === undefined ? '' : _ref2$amount,
_ref2$scale = _ref2.scale,
scale = _ref2$scale === undefined ? 2 : _ref2$scale,
_ref2$roundingMode = _ref2.roundingMode,
roundingMode = _ref2$roundingMode === undefined ? _bigdecimal.BigDecimal.ROUND_DOWN : _ref2$roundingMode;
var _getUnitAndNumberMap = getUnitAndNumberMap({ amount: amount, scale: scale, roundingMode: roundingMode }),
number = _getUnitAndNumberMap.number,
unit = _getUnitAndNumberMap.unit;
return '\u20B9 ' + number + ' ' + unit.suffix;
};