-
Notifications
You must be signed in to change notification settings - Fork 4
/
format.coffee
75 lines (63 loc) · 1.74 KB
/
format.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
moment = require 'moment'
commafy = (value) ->
value.toString().replace /(^|[^\w.])(\d{4,})/g, ($0, $1, $2) ->
$1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,")
date = (dateString) ->
date = new Date(dateString)
formattedDate = moment(date).format('M/D/YYYY')
if formattedDate.indexOf('NaN') is -1
formattedDate
else
''
dateTime = (dateTimeString) ->
date = new Date(dateTimeString)
formattedDate = moment(date).format('M/D/YYYY h:mm A')
if formattedDate.indexOf('NaN') is -1
formattedDate
else
''
boolean = (value) ->
if not value?
' - '
else if value
'Yes'
else
'No'
money = (number) ->
"$#{formatNumber(number, 2)}"
dollars = (number) ->
"$#{formatNumber(number, 0)}"
zipCode = (value) ->
if value.toString().indexOf('-') > -1
# ex: 19147-1234
("00000" + "#{value}".replace(/[^0-9-]/g, '')).slice(-10)
else
# ex: 19147
("00000" + "#{value}".replace(/[^0-9-]/g, '')).slice(-5)
number = (number) ->
formatNumber(number, 0)
decimalNumber = (number) ->
formatNumber(number, 2)
formatNumber = (number, places) ->
commafy((parseFloat(number) or 0).toFixed(places))
modelNames = (models) ->
names = (model.get('name') for model in models)
if names.length < 3
names.join(' and ')
else
"#{names[0...names.length-1].join(', ')}, and #{names[names.length-1]}"
percentage = (number) ->
number = parseFloat(number).toFixed(4)
"#{formatNumber(number * 100.0, 2)}%"
module.exports =
boolean: boolean
commafy: commafy
date: date
dateTime: dateTime
decimalNumber: decimalNumber
dollars: dollars
modelNames: modelNames
money: money
number: number
percentage: percentage
zipCode: zipCode