@onivoro/isomorphic-common 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export * from './lib/functions/to-decimal-base.function';
|
|
|
20
20
|
export * from './lib/functions/to-locale-date-string.function';
|
|
21
21
|
export * from './lib/functions/to-locale-time-string.function';
|
|
22
22
|
export * from './lib/functions/to-unique-array.function';
|
|
23
|
+
export * from './lib/functions/to-words.function';
|
|
23
24
|
export * from './lib/functions/try-parse-date.function';
|
|
24
25
|
export * from './lib/functions/unicode-words.const';
|
|
25
26
|
export * from './lib/functions/upper-first.function';
|
package/src/index.js
CHANGED
|
@@ -23,6 +23,7 @@ tslib_1.__exportStar(require("./lib/functions/to-decimal-base.function"), export
|
|
|
23
23
|
tslib_1.__exportStar(require("./lib/functions/to-locale-date-string.function"), exports);
|
|
24
24
|
tslib_1.__exportStar(require("./lib/functions/to-locale-time-string.function"), exports);
|
|
25
25
|
tslib_1.__exportStar(require("./lib/functions/to-unique-array.function"), exports);
|
|
26
|
+
tslib_1.__exportStar(require("./lib/functions/to-words.function"), exports);
|
|
26
27
|
tslib_1.__exportStar(require("./lib/functions/try-parse-date.function"), exports);
|
|
27
28
|
tslib_1.__exportStar(require("./lib/functions/unicode-words.const"), exports);
|
|
28
29
|
tslib_1.__exportStar(require("./lib/functions/upper-first.function"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/isomorphic-common/src/index.ts"],"names":[],"mappings":";;;AAAA,kFAAwD;AACxD,mFAAyD;AACzD,qFAA2D;AAE3D,8EAAoD;AACpD,8EAAoD;AACpD,6FAAmE;AACnE,uFAA6D;AAC7D,sFAA4D;AAC5D,mFAAyD;AACzD,8EAAoD;AACpD,8EAAoD;AACpD,uFAA6D;AAC7D,qFAA2D;AAC3D,8EAAoD;AACpD,mFAAyD;AACzD,qFAA2D;AAC3D,oFAA0D;AAC1D,iFAAuD;AACvD,mFAAyD;AACzD,yFAA+D;AAC/D,yFAA+D;AAC/D,mFAAyD;AACzD,kFAAwD;AACxD,8EAAoD;AACpD,+EAAqD;AACrD,yEAA+C;AAE/C,kGAAwE;AACxE,qFAA2D;AAC3D,wEAA8C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/isomorphic-common/src/index.ts"],"names":[],"mappings":";;;AAAA,kFAAwD;AACxD,mFAAyD;AACzD,qFAA2D;AAE3D,8EAAoD;AACpD,8EAAoD;AACpD,6FAAmE;AACnE,uFAA6D;AAC7D,sFAA4D;AAC5D,mFAAyD;AACzD,8EAAoD;AACpD,8EAAoD;AACpD,uFAA6D;AAC7D,qFAA2D;AAC3D,8EAAoD;AACpD,mFAAyD;AACzD,qFAA2D;AAC3D,oFAA0D;AAC1D,iFAAuD;AACvD,mFAAyD;AACzD,yFAA+D;AAC/D,yFAA+D;AAC/D,mFAAyD;AACzD,4EAAkD;AAClD,kFAAwD;AACxD,8EAAoD;AACpD,+EAAqD;AACrD,yEAA+C;AAE/C,kGAAwE;AACxE,qFAA2D;AAC3D,wEAA8C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function toWords(number: any): string;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toWords = void 0;
|
|
4
|
+
const MAX_SAFE_INTEGER = 9007199254740991;
|
|
5
|
+
const TEN = 10;
|
|
6
|
+
const ONE_HUNDRED = 100;
|
|
7
|
+
const ONE_THOUSAND = 1000;
|
|
8
|
+
const ONE_MILLION = 1000000;
|
|
9
|
+
const ONE_BILLION = 1000000000;
|
|
10
|
+
const ONE_TRILLION = 1000000000000;
|
|
11
|
+
const ONE_QUADRILLION = 1000000000000000;
|
|
12
|
+
const MAX = MAX_SAFE_INTEGER + 1;
|
|
13
|
+
const LESS_THAN_TWENTY = [
|
|
14
|
+
'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',
|
|
15
|
+
'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
|
|
16
|
+
];
|
|
17
|
+
const TENTHS_LESS_THAN_HUNDRED = [
|
|
18
|
+
'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'
|
|
19
|
+
];
|
|
20
|
+
function toWords(number) {
|
|
21
|
+
let words;
|
|
22
|
+
const num = parseInt(number, 10);
|
|
23
|
+
if (!isFinite(num)) {
|
|
24
|
+
throw new TypeError('Not a finite number: ' + number + ' (' + typeof number + ')');
|
|
25
|
+
}
|
|
26
|
+
if (!isSafeNumber(num)) {
|
|
27
|
+
throw new RangeError('Input is not a safe number, it\'s either too large or too small.');
|
|
28
|
+
}
|
|
29
|
+
words = generateWords(num);
|
|
30
|
+
return words;
|
|
31
|
+
}
|
|
32
|
+
exports.toWords = toWords;
|
|
33
|
+
function generateWords(number, words) {
|
|
34
|
+
let remainder, word;
|
|
35
|
+
if (number === 0) {
|
|
36
|
+
return !words ? 'zero' : words.join(' ').replace(/,$/, '');
|
|
37
|
+
}
|
|
38
|
+
if (!words) {
|
|
39
|
+
words = [];
|
|
40
|
+
}
|
|
41
|
+
if (number < 0) {
|
|
42
|
+
words.push('minus');
|
|
43
|
+
number = Math.abs(number);
|
|
44
|
+
}
|
|
45
|
+
if (number < 20) {
|
|
46
|
+
remainder = 0;
|
|
47
|
+
word = LESS_THAN_TWENTY[number];
|
|
48
|
+
}
|
|
49
|
+
else if (number < ONE_HUNDRED) {
|
|
50
|
+
remainder = number % TEN;
|
|
51
|
+
word = TENTHS_LESS_THAN_HUNDRED[Math.floor(number / TEN)];
|
|
52
|
+
if (remainder) {
|
|
53
|
+
word += '-' + LESS_THAN_TWENTY[remainder];
|
|
54
|
+
remainder = 0;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (number < ONE_THOUSAND) {
|
|
58
|
+
remainder = number % ONE_HUNDRED;
|
|
59
|
+
word = generateWords(Math.floor(number / ONE_HUNDRED)) + ' hundred';
|
|
60
|
+
}
|
|
61
|
+
else if (number < ONE_MILLION) {
|
|
62
|
+
remainder = number % ONE_THOUSAND;
|
|
63
|
+
word = generateWords(Math.floor(number / ONE_THOUSAND)) + ' thousand,';
|
|
64
|
+
}
|
|
65
|
+
else if (number < ONE_BILLION) {
|
|
66
|
+
remainder = number % ONE_MILLION;
|
|
67
|
+
word = generateWords(Math.floor(number / ONE_MILLION)) + ' million,';
|
|
68
|
+
}
|
|
69
|
+
else if (number < ONE_TRILLION) {
|
|
70
|
+
remainder = number % ONE_BILLION;
|
|
71
|
+
word = generateWords(Math.floor(number / ONE_BILLION)) + ' billion,';
|
|
72
|
+
}
|
|
73
|
+
else if (number < ONE_QUADRILLION) {
|
|
74
|
+
remainder = number % ONE_TRILLION;
|
|
75
|
+
word = generateWords(Math.floor(number / ONE_TRILLION)) + ' trillion,';
|
|
76
|
+
}
|
|
77
|
+
else if (number <= MAX) {
|
|
78
|
+
remainder = number % ONE_QUADRILLION;
|
|
79
|
+
word = generateWords(Math.floor(number / ONE_QUADRILLION)) +
|
|
80
|
+
' quadrillion,';
|
|
81
|
+
}
|
|
82
|
+
words.push(word);
|
|
83
|
+
return generateWords(remainder, words);
|
|
84
|
+
}
|
|
85
|
+
function isFinite(value) {
|
|
86
|
+
return !(typeof value !== 'number' || value !== value || value === Infinity || value === -Infinity);
|
|
87
|
+
}
|
|
88
|
+
function isSafeNumber(value) {
|
|
89
|
+
return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=to-words.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-words.function.js","sourceRoot":"","sources":["../../../../../../libs/isomorphic-common/src/lib/functions/to-words.function.ts"],"names":[],"mappings":"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"}
|