1 | var round = require('./round')
|
2 | var ceil = require('./ceil')
|
3 | var floor = require('./floor')
|
4 |
|
5 | var isNumber = require('./isNumber')
|
6 | var toValueString = require('./toValueString')
|
7 | var toFixed = require('./toFixed')
|
8 |
|
9 | var toNumberString = require('./toNumberString')
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | function commafy(num, options) {
|
19 | var opts = options || {}
|
20 | var optDigits = opts.digits
|
21 | var isNum = isNumber(num)
|
22 | var rest, result, isNegative, intStr, floatStr
|
23 | if (isNum) {
|
24 | rest = (opts.ceil ? ceil : (opts.floor ? floor : round))(num, optDigits)
|
25 | result = toNumberString(optDigits ? toFixed(rest, optDigits) : rest).split('.')
|
26 | intStr = result[0]
|
27 | floatStr = result[1]
|
28 | isNegative = intStr && rest < 0
|
29 | if (isNegative) {
|
30 | intStr = intStr.substring(1, intStr.length)
|
31 | }
|
32 | } else {
|
33 | rest = toValueString(num).replace(/,/g, '')
|
34 | result = rest ? [rest] : []
|
35 | intStr = result[0]
|
36 | }
|
37 | if (result.length) {
|
38 | return (isNegative ? '-' : '') + intStr.replace(new RegExp('(?=(?!(\\b))(.{' + (opts.spaceNumber || 3) + '})+$)', 'g'), (opts.separator || ',')) + (floatStr ? ('.' + floatStr) : '')
|
39 | }
|
40 | return rest
|
41 | }
|
42 |
|
43 | module.exports = commafy
|