@planarcat/js-toolkit 1.5.2 → 1.5.3
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/README.md +18 -0
- package/dist/object/toFormattedNumber.d.ts +2 -2
- package/dist/object/toFormattedNumberString.d.ts.map +1 -1
- package/dist/object/toFormattedNumberString.js +31 -18
- package/dist/object/toFormattedNumberString.js.map +1 -1
- package/dist/types/object.d.ts +3 -3
- package/dist/types/object.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -248,6 +248,24 @@ npm run test:coverage
|
|
|
248
248
|
|
|
249
249
|
## 更新日志
|
|
250
250
|
|
|
251
|
+
### v1.5.3
|
|
252
|
+
|
|
253
|
+
- ✨ 增强了 `toFormattedNumberString` 函数,为 `preProcessor` 和 `suffix` 函数添加了更多参数
|
|
254
|
+
- ✨ `preProcessor` 现在接收两个参数:转化后的 number 以及原始对象
|
|
255
|
+
- ✨ `suffix` 如果是函数,现在接收三个参数:格式化后的字符串、转化后格式化前的 number,以及原始对象
|
|
256
|
+
- ✨ 增强了测试用例,验证新功能
|
|
257
|
+
- ✨ 更新了文档,明确说明每个函数参数的用途
|
|
258
|
+
|
|
259
|
+
### v1.5.2
|
|
260
|
+
|
|
261
|
+
- ✨ 更新了函数返回值类型说明,明确区分数组和非数组输入的返回值
|
|
262
|
+
- ✨ 生成了最新的 API 文档
|
|
263
|
+
|
|
264
|
+
### v1.5.1
|
|
265
|
+
|
|
266
|
+
- ✨ 更新了 README 文档,修复了参数名称
|
|
267
|
+
- ✨ 生成了最新的 API 文档
|
|
268
|
+
|
|
251
269
|
### v1.5.0
|
|
252
270
|
|
|
253
271
|
- ✨ 为 `toFormattedNumberString` 函数的前缀后缀添加函数类型支持
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toFormattedNumberString.d.ts","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toFormattedNumberString.d.ts","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"AA0EA,iBAAS,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GAAG,MAAM,EAAE,CAAC;AAElI,iBAAS,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GAAG,MAAM,CAAC;AAyI9H,eAAe,uBAAuB,CAAC"}
|
|
@@ -19,14 +19,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
19
19
|
* @param options.zeroValue - 当值为0时的显示,默认'0'
|
|
20
20
|
* @param options.localized - 是否使用本地化格式,默认false
|
|
21
21
|
* @param options.preProcessor - 预处理函数,在数字转换后、字符串格式化前应用
|
|
22
|
+
* 接收两个参数:转化后的数字和原始对象
|
|
22
23
|
* @param options.prefix - 前缀,可以是字符串或函数,默认''
|
|
23
|
-
*
|
|
24
|
+
* 如果是函数,会接收格式化前的数字和原始对象作为参数,返回字符串作为前缀
|
|
24
25
|
* @param options.suffix - 后缀,可以是字符串或函数,默认''
|
|
25
|
-
*
|
|
26
|
+
* 如果是函数,会接收三个参数:格式化后的字符串、转化后格式化前的数字、原始对象,返回字符串作为后缀
|
|
26
27
|
*
|
|
27
28
|
* @returns 格式化后的数字字符串或字符串数组
|
|
28
|
-
* -
|
|
29
|
-
* -
|
|
29
|
+
* - 当传入的 object 为非数组时,返回 string
|
|
30
|
+
* - 当传入的 object 为数组时,返回 string[]
|
|
30
31
|
* - 支持深层数组递归处理
|
|
31
32
|
*
|
|
32
33
|
* @example
|
|
@@ -82,11 +83,20 @@ function toFormattedNumberString(object, options) {
|
|
|
82
83
|
* 处理前缀或后缀,可以是字符串或函数
|
|
83
84
|
* @param prefixOrSuffix - 前缀或后缀,可以是字符串或函数
|
|
84
85
|
* @param num - 要传递给函数的数字
|
|
86
|
+
* @param formatted - 格式化后的字符串(仅用于后缀函数)
|
|
87
|
+
* @param original - 原始对象
|
|
85
88
|
* @returns 处理后的前缀或后缀字符串
|
|
86
89
|
*/
|
|
87
|
-
const processPrefixSuffix = (prefixOrSuffix, num) => {
|
|
90
|
+
const processPrefixSuffix = (prefixOrSuffix, num, formatted, original = object) => {
|
|
88
91
|
if (typeof prefixOrSuffix === 'function') {
|
|
89
|
-
|
|
92
|
+
if (formatted !== undefined) {
|
|
93
|
+
// 后缀函数,接收三个参数
|
|
94
|
+
return prefixOrSuffix(formatted, num, original);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// 前缀函数,接收两个参数
|
|
98
|
+
return prefixOrSuffix(num, original);
|
|
99
|
+
}
|
|
90
100
|
}
|
|
91
101
|
return prefixOrSuffix;
|
|
92
102
|
};
|
|
@@ -94,25 +104,27 @@ function toFormattedNumberString(object, options) {
|
|
|
94
104
|
* 添加前缀和后缀
|
|
95
105
|
* @param str - 要添加前缀后缀的字符串
|
|
96
106
|
* @param num - 要传递给前缀后缀函数的数字
|
|
107
|
+
* @param original - 原始对象
|
|
97
108
|
* @returns 添加了前缀后缀的字符串
|
|
98
109
|
*/
|
|
99
|
-
const addPrefixSuffix = (str, num) => {
|
|
100
|
-
const processedPrefix = processPrefixSuffix(prefix, num);
|
|
101
|
-
const processedSuffix = processPrefixSuffix(suffix, num);
|
|
110
|
+
const addPrefixSuffix = (str, num, original = object) => {
|
|
111
|
+
const processedPrefix = processPrefixSuffix(prefix, num, undefined, original);
|
|
112
|
+
const processedSuffix = processPrefixSuffix(suffix, num, str, original);
|
|
102
113
|
return `${processedPrefix}${str}${processedSuffix}`;
|
|
103
114
|
};
|
|
104
115
|
/**
|
|
105
116
|
* 将单个数字转换为格式化字符串
|
|
106
117
|
* @param num - 要转换的数字
|
|
118
|
+
* @param original - 原始对象
|
|
107
119
|
* @returns 格式化后的字符串
|
|
108
120
|
*/
|
|
109
|
-
const convertNumberToString = (num) => {
|
|
121
|
+
const convertNumberToString = (num, original) => {
|
|
110
122
|
// 处理0情况
|
|
111
123
|
if (num === 0) {
|
|
112
|
-
return addPrefixSuffix(zeroValue, num);
|
|
124
|
+
return addPrefixSuffix(zeroValue, num, original);
|
|
113
125
|
}
|
|
114
126
|
// 应用预处理函数
|
|
115
|
-
const processedNum = preProcessor ? preProcessor(num) : num;
|
|
127
|
+
const processedNum = preProcessor ? preProcessor(num, original) : num;
|
|
116
128
|
// 格式化数字为字符串
|
|
117
129
|
let strNum;
|
|
118
130
|
if (localized) {
|
|
@@ -141,7 +153,7 @@ function toFormattedNumberString(object, options) {
|
|
|
141
153
|
}
|
|
142
154
|
}
|
|
143
155
|
// 添加前缀和后缀
|
|
144
|
-
return addPrefixSuffix(strNum, processedNum);
|
|
156
|
+
return addPrefixSuffix(strNum, processedNum, original);
|
|
145
157
|
};
|
|
146
158
|
/**
|
|
147
159
|
* 检查字符串是否包含数字
|
|
@@ -154,18 +166,19 @@ function toFormattedNumberString(object, options) {
|
|
|
154
166
|
/**
|
|
155
167
|
* 递归处理值,转换为格式化字符串
|
|
156
168
|
* @param value - 要处理的值
|
|
169
|
+
* @param original - 原始对象或数组元素
|
|
157
170
|
* @returns 格式化后的字符串或字符串数组
|
|
158
171
|
*/
|
|
159
|
-
const processValue = (value) => {
|
|
172
|
+
const processValue = (value, original = object) => {
|
|
160
173
|
if (Array.isArray(value)) {
|
|
161
174
|
// 递归处理数组
|
|
162
|
-
return value.map(processValue);
|
|
175
|
+
return value.map((item, _index) => processValue(item, item));
|
|
163
176
|
}
|
|
164
177
|
else {
|
|
165
178
|
// 检查是否为无数字的字符串
|
|
166
179
|
if (typeof value === 'string' && !hasNumbers(value)) {
|
|
167
180
|
// 无数字的字符串返回0
|
|
168
|
-
return addPrefixSuffix(zeroValue, 0);
|
|
181
|
+
return addPrefixSuffix(zeroValue, 0, original);
|
|
169
182
|
}
|
|
170
183
|
// 对于其他类型,首先将输入转换为数字
|
|
171
184
|
// 注意:toFormattedNumber对于单个值会返回number类型
|
|
@@ -176,10 +189,10 @@ function toFormattedNumberString(object, options) {
|
|
|
176
189
|
// 检查是否为NaN
|
|
177
190
|
if (isNaN(num)) {
|
|
178
191
|
// 其他NaN情况,使用nanValue
|
|
179
|
-
return addPrefixSuffix(nanValue, num);
|
|
192
|
+
return addPrefixSuffix(nanValue, num, original);
|
|
180
193
|
}
|
|
181
194
|
// 正常数字转换
|
|
182
|
-
return convertNumberToString(num);
|
|
195
|
+
return convertNumberToString(num, original);
|
|
183
196
|
}
|
|
184
197
|
};
|
|
185
198
|
// 处理输入值
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toFormattedNumberString.js","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":";;;;;AAAA
|
|
1
|
+
{"version":3,"file":"toFormattedNumberString.js","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"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"}
|
package/dist/types/object.d.ts
CHANGED
|
@@ -42,16 +42,16 @@ export interface ToFormattedNumberStringOptions extends CommonFormatOptions {
|
|
|
42
42
|
* 预处理函数,在对象被处理为数字后调用,
|
|
43
43
|
* 默认无。
|
|
44
44
|
*/
|
|
45
|
-
preProcessor?: (num: number) => number;
|
|
45
|
+
preProcessor?: (num: number, original: unknown) => number;
|
|
46
46
|
/**
|
|
47
47
|
* 前缀,可以是字符串或函数,
|
|
48
48
|
* 默认''。
|
|
49
49
|
*/
|
|
50
|
-
prefix?: string | ((value: number) => string);
|
|
50
|
+
prefix?: string | ((value: number, original: unknown) => string);
|
|
51
51
|
/**
|
|
52
52
|
* 后缀,可以是字符串或函数,
|
|
53
53
|
* 默认''。
|
|
54
54
|
*/
|
|
55
|
-
suffix?: string | ((value: number) => string);
|
|
55
|
+
suffix?: string | ((formatted: string, value: number, original: unknown) => string);
|
|
56
56
|
}
|
|
57
57
|
//# sourceMappingURL=object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACvE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACvE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;IAC1D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IACjE;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;CACvF"}
|
package/package.json
CHANGED