-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-num2txt.js
More file actions
129 lines (117 loc) · 3.42 KB
/
angular-num2txt.js
File metadata and controls
129 lines (117 loc) · 3.42 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
'use strict';
angular.module('angular-num2txt', [])
/* this is a filter that converts numbers to text
* i.e. $345.67 becomes Three Hundred Fort-Five and 67/100
* to use, simply add | num2txt to the bound model
* i.e. {{ number | num2txt }}
*/
.filter('num2txt', function() {
return function(value) {
// console.log("num2txt called...")
// number to text function
var convert = function(number) {
// console.log("nbr2txt called...")
if (typeof(number) == "string") {
var currency = number;
//convert if string, remove dollar sign, commas
number = currency.replace(/[^0-9\.]+/g,"");
}
var ones = [
""
, "One"
, "Two"
, "Three"
, "Four"
, "Five"
, "Six"
, "Seven"
, "Eight"
, "Nine"
, "Ten"
, "Eleven"
, "Twelve"
, "Thirteen"
, "Fourteen"
, "Fifteen"
, "Sixteen"
, "Seventeen"
, "Eighteen"
, "Nineteen"
];
var tens = [
""
, ""
, "Twenty"
, "Thirty"
, "Forty"
, "Fifty"
, "Sixty"
, "Seventy"
, "Eighty"
, "Ninety"
];
var cents = number - (Math.floor(number));
cents = Math.round(cents * 100);
var nbr = Math.floor(number);
var tn = Math.floor(nbr / 1000000000000);
nbr -= tn * 1000000000000;
var bn = Math.floor(nbr / 1000000000);
nbr -= bn * 1000000000;
var gn = Math.floor(nbr / 1000000);
nbr -= gn * 1000000;
var kn = Math.floor(nbr / 1000);
nbr -= kn * 1000;
var hn = Math.floor(nbr / 100);
nbr -= hn * 100;
var dn = Math.floor(nbr / 10);
nbr -= dn * 10;
var n = nbr % 10;
var res = "";
if(tn) {
res += (res.length == 0 ? "" : " ") + convert(tn) + " Trillion";
}
if(bn) {
res += (res.length == 0 ? "" : " ") + convert(bn) + " Billion";
}
if(gn) {
res += (res.length == 0 ? "" : " ") + convert(gn) + " Million";
}
if(kn) {
res += (res.length == 0 ? "" : " ") + convert(kn) + " Thousand";
}
if(hn) {
res += (res.length == 0 ? "" : " ") + convert(hn) + " Hundred";
}
if(dn || n) {
if(res.length > 0) {
res += " ";
}
if(dn < 2) {
res += ones[dn * 10 + n];
}
else {
res += tens[dn];
if(n) {
res += "-" + ones[n];
}
}
}
if(cents) {
res += (res.length == 0 ? "" : " and ") + cents + "/100";
}
if(res.length == 0) {
res = "Zero";
}
return res;
}
// avoid an exception being thrown during dirty checking before the state is defined
if(!value) {
return false;
}
else {
return convert(value);
}
}
})
// end file
;