@fnmain/number 1.5.0 → 1.5.2
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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -14
- package/dist/index.js.map +1 -1
- package/dist/test.js +1 -1
- package/dist/test.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +14 -17
- package/src/test.ts +1 -1
package/dist/index.d.ts
CHANGED
@@ -9,9 +9,9 @@ export declare function toYi(value: number, { fixed, trimEndZeros, space }?: Opt
|
|
9
9
|
export declare function toWanYi(value: number, { fixed, trimEndZeros, space }?: Options): string;
|
10
10
|
export declare function toAuto(value: number, { fixed, trimEndZeros, space }?: Options): string;
|
11
11
|
export declare function toPercent(value: number, { fixed, trimEndZeros, space }?: Options): string;
|
12
|
-
export declare function parseNumber(input:
|
12
|
+
export declare function parseNumber(input: any): number;
|
13
13
|
export declare function isNumber(value: any): boolean;
|
14
14
|
export declare function isNotNumber(value: any): boolean;
|
15
|
-
export declare function formatWithCommas(value:
|
15
|
+
export declare function formatWithCommas(value: any): string;
|
16
16
|
export {};
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAcR;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,UAK9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAIR;AAED,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,GAC5D,MAAM,CAcR;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,EAAE,KAAS,EAAE,YAAoB,EAAE,KAAU,EAAE,GAAE,OAAY,UAK9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAwD9C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE5C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAGnD"}
|
package/dist/index.js
CHANGED
@@ -52,6 +52,12 @@ function toPercent(value, { fixed = 0, trimEndZeros = false, space = "" } = {})
|
|
52
52
|
}
|
53
53
|
exports.toPercent = toPercent;
|
54
54
|
function parseNumber(input) {
|
55
|
+
if (typeof input === "number") {
|
56
|
+
return input;
|
57
|
+
}
|
58
|
+
if (typeof input !== "string") {
|
59
|
+
return NaN;
|
60
|
+
}
|
55
61
|
input = input.trim(); // Remove whitespace
|
56
62
|
input = input.replace(/,/g, ""); // Remove commas
|
57
63
|
// Define a helper function to handle suffixes
|
@@ -79,22 +85,22 @@ function parseNumber(input) {
|
|
79
85
|
// Check for percentage
|
80
86
|
if (input.endsWith("%")) {
|
81
87
|
const number = parseFloat(input.slice(0, -1));
|
82
|
-
return isNaN(number) ?
|
88
|
+
return isNaN(number) ? NaN : number / 100;
|
83
89
|
}
|
84
90
|
// Check for per mille
|
85
91
|
if (input.endsWith("‰")) {
|
86
92
|
const number = parseFloat(input.slice(0, -1));
|
87
|
-
return isNaN(number) ?
|
93
|
+
return isNaN(number) ? NaN : number / 1000;
|
88
94
|
}
|
89
95
|
// Check for suffixes (k, m, g, t)
|
90
96
|
const suffixMatch = input.match(/([kmgbt万萬w亿])$/i);
|
91
97
|
if (suffixMatch) {
|
92
98
|
const number = parseFloat(input.slice(0, -1));
|
93
|
-
return isNaN(number) ?
|
99
|
+
return isNaN(number) ? NaN : handleSuffix(number, suffixMatch[0]);
|
94
100
|
}
|
95
101
|
// Check for scientific notation and other formats
|
96
102
|
const number = parseFloat(input);
|
97
|
-
return isNaN(number) ?
|
103
|
+
return isNaN(number) ? NaN : number;
|
98
104
|
}
|
99
105
|
exports.parseNumber = parseNumber;
|
100
106
|
function isNumber(value) {
|
@@ -106,16 +112,7 @@ function isNotNumber(value) {
|
|
106
112
|
}
|
107
113
|
exports.isNotNumber = isNotNumber;
|
108
114
|
function formatWithCommas(value) {
|
109
|
-
|
110
|
-
if (typeof value === "string") {
|
111
|
-
val = parseNumber(value);
|
112
|
-
if (val === null) {
|
113
|
-
throw new Error("Invalid number format");
|
114
|
-
}
|
115
|
-
}
|
116
|
-
else {
|
117
|
-
val = value;
|
118
|
-
}
|
115
|
+
const val = parseNumber(value);
|
119
116
|
return val.toString().replace(/(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
|
120
117
|
}
|
121
118
|
exports.formatWithCommas = formatWithCommas;
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/test.js
CHANGED
@@ -24,7 +24,7 @@ console.log((0, index_1.parseNumber)("1t")); // 1000000000000
|
|
24
24
|
console.log((0, index_1.parseNumber)("1万")); // 10000
|
25
25
|
console.log((0, index_1.parseNumber)("1w")); // 10000
|
26
26
|
console.log((0, index_1.parseNumber)("1亿")); // 100000000
|
27
|
-
console.log((0, index_1.parseNumber)("abc")); //
|
27
|
+
console.log((0, index_1.parseNumber)("abc")); // NaN
|
28
28
|
console.log((0, index_1.parseNumber)("1,000,000")); // 1000000
|
29
29
|
console.log((0, index_1.isNumber)(null)); // false
|
30
30
|
console.log((0, index_1.isNotNumber)(null)); // true
|
package/dist/test.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,mCAAkG;AAElG,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,SAAS,CAAC,CAAC,CAAC;AAE/B,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACzD,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5E,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE/D,OAAO,CAAC,GAAG,CAAC,IAAA,iBAAS,EAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACzD,OAAO,CAAC,GAAG,CAAC,IAAA,iBAAS,EAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,IAAA,iBAAS,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE9D,gBAAgB;AAChB,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AACvC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;AACxC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;AAC3C,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AACxC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO;AACvC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;AAC1C,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa;AAC7C,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB;AAChD,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AACxC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AACxC,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY;AAC5C,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -69,7 +69,14 @@ export function toPercent(
|
|
69
69
|
return ret + space + "%";
|
70
70
|
}
|
71
71
|
|
72
|
-
export function parseNumber(input:
|
72
|
+
export function parseNumber(input: any): number {
|
73
|
+
if (typeof input === "number") {
|
74
|
+
return input;
|
75
|
+
}
|
76
|
+
if (typeof input !== "string") {
|
77
|
+
return NaN;
|
78
|
+
}
|
79
|
+
|
73
80
|
input = input.trim(); // Remove whitespace
|
74
81
|
input = input.replace(/,/g, ""); // Remove commas
|
75
82
|
|
@@ -99,25 +106,25 @@ export function parseNumber(input: string): number | null {
|
|
99
106
|
// Check for percentage
|
100
107
|
if (input.endsWith("%")) {
|
101
108
|
const number = parseFloat(input.slice(0, -1));
|
102
|
-
return isNaN(number) ?
|
109
|
+
return isNaN(number) ? NaN : number / 100;
|
103
110
|
}
|
104
111
|
|
105
112
|
// Check for per mille
|
106
113
|
if (input.endsWith("‰")) {
|
107
114
|
const number = parseFloat(input.slice(0, -1));
|
108
|
-
return isNaN(number) ?
|
115
|
+
return isNaN(number) ? NaN : number / 1000;
|
109
116
|
}
|
110
117
|
|
111
118
|
// Check for suffixes (k, m, g, t)
|
112
119
|
const suffixMatch = input.match(/([kmgbt万萬w亿])$/i);
|
113
120
|
if (suffixMatch) {
|
114
121
|
const number = parseFloat(input.slice(0, -1));
|
115
|
-
return isNaN(number) ?
|
122
|
+
return isNaN(number) ? NaN : handleSuffix(number, suffixMatch[0]);
|
116
123
|
}
|
117
124
|
|
118
125
|
// Check for scientific notation and other formats
|
119
126
|
const number = parseFloat(input);
|
120
|
-
return isNaN(number) ?
|
127
|
+
return isNaN(number) ? NaN : number;
|
121
128
|
}
|
122
129
|
|
123
130
|
export function isNumber(value: any): boolean {
|
@@ -128,17 +135,7 @@ export function isNotNumber(value: any): boolean {
|
|
128
135
|
return !Number.isFinite(value);
|
129
136
|
}
|
130
137
|
|
131
|
-
export function formatWithCommas(value:
|
132
|
-
|
133
|
-
|
134
|
-
if (typeof value === "string") {
|
135
|
-
val = parseNumber(value);
|
136
|
-
if (val === null) {
|
137
|
-
throw new Error("Invalid number format");
|
138
|
-
}
|
139
|
-
} else {
|
140
|
-
val = value;
|
141
|
-
}
|
142
|
-
|
138
|
+
export function formatWithCommas(value: any): string {
|
139
|
+
const val = parseNumber(value);
|
143
140
|
return val.toString().replace(/(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
|
144
141
|
}
|
package/src/test.ts
CHANGED
@@ -26,7 +26,7 @@ console.log(parseNumber("1t")); // 1000000000000
|
|
26
26
|
console.log(parseNumber("1万")); // 10000
|
27
27
|
console.log(parseNumber("1w")); // 10000
|
28
28
|
console.log(parseNumber("1亿")); // 100000000
|
29
|
-
console.log(parseNumber("abc")); //
|
29
|
+
console.log(parseNumber("abc")); // NaN
|
30
30
|
console.log(parseNumber("1,000,000")); // 1000000
|
31
31
|
|
32
32
|
console.log(isNumber(null)); // false
|