hsu-utils 0.0.8 → 0.0.10-alpha.1

Sign up to get free protection for your applications and to get access to all the features.
package/dist/hsu-utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * hsu-utils v0.0.7
3
+ * hsu-utils v0.0.10-alpha.1
4
4
  *
5
5
  * some front-end utils
6
6
  *
@@ -59,6 +59,16 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar
59
59
 
60
60
  /***/ }),
61
61
 
62
+ /***/ "./tools/ConvertNumbers/index.ts":
63
+ /*!***************************************!*\
64
+ !*** ./tools/ConvertNumbers/index.ts ***!
65
+ \***************************************/
66
+ /***/ ((__unused_webpack_module, exports) => {
67
+
68
+ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.toChineseNum = void 0;\nfunction toChineseNum(num, options) {\n if (options === void 0) { options = {}; }\n var benchmark = options.benchmark, _a = options.textType, textType = _a === void 0 ? 'lowercase' : _a;\n var cnNums = {\n lowercase: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],\n uppercase: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']\n };\n var cnIntRadice = {\n lowercase: ['', '十', '百', '千'],\n uppercase: ['', '拾', '佰', '仟']\n };\n var cnIntUnits = {\n lowercase: ['', '万', '亿', '兆'],\n uppercase: ['', '万', '亿', '兆']\n };\n var maxNum = 9999999999999999.9999999999999999;\n var integerNum = undefined;\n var decimalNum = undefined;\n var chineseStr = '';\n if (benchmark) {\n num *= benchmark;\n num = +num.toFixed(4);\n }\n if (num > maxNum) {\n return '超出转换范围';\n }\n var moneyStr = num.toString();\n integerNum = moneyStr.split('.')[0];\n decimalNum = moneyStr.split('.')[1];\n if (integerNum) {\n var zeroCount = 0;\n for (var i = 0; i < integerNum.length; i++) {\n var index = integerNum.length - i - 1;\n var num_1 = +integerNum[i];\n var units = Math.floor(index / 4);\n var radice = index % (4 * (units === 0 ? 1 : units));\n if (+integerNum[i] === 0) {\n zeroCount++;\n }\n else {\n if (zeroCount > 0) {\n chineseStr += cnNums[textType][0];\n zeroCount = 0;\n }\n chineseStr += \"\".concat(cnNums[textType][num_1] + cnIntRadice[textType][radice]);\n if (index % 4 === 0) {\n chineseStr += cnIntUnits[textType][units];\n }\n }\n }\n }\n if (decimalNum) {\n chineseStr += '点';\n for (var i = 0; i < decimalNum.length; i++) {\n var num_2 = +decimalNum[i];\n if (+decimalNum[i] === 0) {\n chineseStr += \"\".concat(cnNums[textType][0]);\n }\n else {\n chineseStr += \"\".concat(cnNums[textType][num_2]);\n }\n }\n }\n if (chineseStr === '') {\n chineseStr += cnNums[textType][0];\n }\n return chineseStr;\n}\nexports.toChineseNum = toChineseNum;\nvar ConvertNumbers = {\n toChineseNum: toChineseNum\n};\nexports[\"default\"] = ConvertNumbers;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/ConvertNumbers/index.ts?");
69
+
70
+ /***/ }),
71
+
62
72
  /***/ "./tools/DeepCopy/index.ts":
63
73
  /*!*********************************!*\
64
74
  !*** ./tools/DeepCopy/index.ts ***!
@@ -85,7 +95,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexpo
85
95
  \************************************/
86
96
  /***/ ((__unused_webpack_module, exports) => {
87
97
 
88
- eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction get_string_width(str) {\n var width = 0;\n for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {\n var char = str_1[_i];\n width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 0.5 : 1;\n }\n return width;\n}\nexports[\"default\"] = get_string_width;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/GetStrWidth/index.ts?");
98
+ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction get_string_width(str, font) {\n if (font === void 0) { font = {}; }\n var _a = font.style, style = _a === void 0 ? 'normal' : _a, _b = font.variant, variant = _b === void 0 ? 'normal' : _b, _c = font.weight, weight = _c === void 0 ? 'normal' : _c, _d = font.size, size = _d === void 0 ? 12 : _d, _e = font.lineHeight, lineHeight = _e === void 0 ? 1 : _e, _f = font.family, fontFamily = _f === void 0 ? '微软雅黑, \"Microsoft YaHei\", -apple-system' : _f;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n ctx.font = \"\".concat(style, \" \").concat(variant, \" \").concat(weight, \" \").concat(size, \"px/\").concat(lineHeight, \" \").concat(fontFamily);\n var metrics = ctx.measureText(str);\n var width = +(+metrics.width.toFixed(2) + 0.01).toFixed(2);\n return width;\n}\nexports[\"default\"] = get_string_width;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/GetStrWidth/index.ts?");
89
99
 
90
100
  /***/ }),
91
101
 
@@ -105,7 +115,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunc
105
115
  \************************/
106
116
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
107
117
 
108
- eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.get_string_width = exports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;\nvar ConsoleTable_1 = __importDefault(__webpack_require__(/*! ./ConsoleTable */ \"./tools/ConsoleTable/index.ts\"));\nexports.console_table = ConsoleTable_1.default;\nvar DeepCopy_1 = __importDefault(__webpack_require__(/*! ./DeepCopy */ \"./tools/DeepCopy/index.ts\"));\nexports.deepCopy = DeepCopy_1.default;\nvar Equal_1 = __importDefault(__webpack_require__(/*! ./Equal */ \"./tools/Equal/index.ts\"));\nexports.Equal = Equal_1.default;\nvar Typeof_1 = __importDefault(__webpack_require__(/*! ./Typeof */ \"./tools/Typeof/index.ts\"));\nexports.Typeof = Typeof_1.default;\nvar GetStrWidth_1 = __importDefault(__webpack_require__(/*! ./GetStrWidth */ \"./tools/GetStrWidth/index.ts\"));\nexports.get_string_width = GetStrWidth_1.default;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/index.ts?");
118
+ eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConvertNumbers = exports.get_string_width = exports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;\nvar ConsoleTable_1 = __importDefault(__webpack_require__(/*! ./ConsoleTable */ \"./tools/ConsoleTable/index.ts\"));\nexports.console_table = ConsoleTable_1.default;\nvar DeepCopy_1 = __importDefault(__webpack_require__(/*! ./DeepCopy */ \"./tools/DeepCopy/index.ts\"));\nexports.deepCopy = DeepCopy_1.default;\nvar Equal_1 = __importDefault(__webpack_require__(/*! ./Equal */ \"./tools/Equal/index.ts\"));\nexports.Equal = Equal_1.default;\nvar Typeof_1 = __importDefault(__webpack_require__(/*! ./Typeof */ \"./tools/Typeof/index.ts\"));\nexports.Typeof = Typeof_1.default;\nvar GetStrWidth_1 = __importDefault(__webpack_require__(/*! ./GetStrWidth */ \"./tools/GetStrWidth/index.ts\"));\nexports.get_string_width = GetStrWidth_1.default;\nvar ConvertNumbers_1 = __importDefault(__webpack_require__(/*! ./ConvertNumbers */ \"./tools/ConvertNumbers/index.ts\"));\nexports.ConvertNumbers = ConvertNumbers_1.default;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/index.ts?");
109
119
 
110
120
  /***/ })
111
121
 
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see hsu-utils.min.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["hsu-utils"]=t():e["hsu-utils"]=t()}(this,(()=>(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r="+",o="-",n="|",a=" ",u="";function f(e){for(var t=0,r=0,o=e;r<o.length;r++){var n=o[r];t+=n.charCodeAt(0)<128&&n.charCodeAt(0)>=0?1:2}return t}function l(e,t){void 0===t&&(t=!1);var n=e.length,a="";return e.forEach((function(e,f){a+=r+function(e){for(var t="",r=0;r<=e;r++)t+=o;return t}(e+1),a+=f===n-1?r+(t?u:"\n"):u})),a}function i(e){for(var t="",r=0;r<=e;r++)t+=a;return t}t.default=function(e,t){var r=e.length,o=function(e){for(var t=Object.keys(e[0]).map((function(e){return+e})),r=0,o=e;r<o.length;r++)o[r].forEach((function(e,r){var o=f(e.toString());t[r]=Math.max(o,t[r])}));return t}(e),c="";e.forEach((function(e,t){t<=1&&(c+=l(o)),c+=function(e,t){var r=e.length,o="";return e.forEach((function(e,l){var c=t[l],p="";isNaN(+c)?p+=a+(null!=c?c:"")+i(e-f((null!=c?c:"").toString())):p+=i(e-f(c.toString()))+c+a,o+=n+p,o+=l===r-1?n+"\n":u})),o}(o,e),t===r-1&&(c+=l(o,!0))})),console.log(c),t&&t(c)}},819:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(243);t.default=function e(t){if("date"===(0,o.Typeof)(t))return new Date(t.toISOString());if("formdata"===(0,o.Typeof)(t)){var r=t,n=new FormData;return r.forEach((function(e,t){n.append(t,e)})),n}if(Array.isArray(t))return t.map((function(t){return"object"==typeof t?e(t):t}));if(t&&"object"===(0,o.Typeof)(t)){var a=t,u={};return Object.keys(a).forEach((function(t){var r=a[t];u[t]="object"==typeof r?e(r):r})),u}return t}},962:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ObjEqual=t.ValEqual=t.TypeEqual=void 0;var o=r(243);function n(e,t){return(0,o.Typeof)(e)===(0,o.Typeof)(t)}function a(e,t){return null===e&&void 0===t||void 0===e&&null===t||("object"==typeof e&&"object"==typeof t?u(e,t):"function"==typeof e&&"function"==typeof t?JSON.stringify(e)===JSON.stringify(t):e===t)}function u(e,t){var r=!1,n=(0,o.deepCopy)(e),u=(0,o.deepCopy)(t);if(null!==n&&null!==u){if(Array.isArray(n)&&Array.isArray(u))if(n.sort(),u.sort(),n.length!==u.length)r=!1;else{r=!0;for(var f=0;f<n.length&&(r=a(n[f],u[f]));f++);}else if("object"==typeof n&&"object"==typeof u)if(Object.keys(n).length!==Object.keys(u).length)r=!1;else for(var l in r=!0,n)if(!(r=a(n[l],u[l])))break}else null===n&&null===u&&(r=!0);return r}t.TypeEqual=n,t.ValEqual=a,t.ObjEqual=u;var f={ValEqual:a,TypeEqual:n,ObjEqual:u};t.default=f},285:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){for(var t=0,r=0,o=e;r<o.length;r++){var n=o[r];t+=n.charCodeAt(0)<128&&n.charCodeAt(0)>=0?.5:1}return t}},332:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=Object.prototype.toString.call(e),r=new RegExp(" (.+?)]");return t.match(r)[1].toLowerCase()}},243:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.get_string_width=t.Typeof=t.Equal=t.deepCopy=t.console_table=void 0;var n=o(r(442));t.console_table=n.default;var a=o(r(819));t.deepCopy=a.default;var u=o(r(962));t.Equal=u.default;var f=o(r(332));t.Typeof=f.default;var l=o(r(285));t.get_string_width=l.default}},t={};var r=function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o].call(a.exports,a,a.exports,r),a.exports}(243);return r})()));
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["hsu-utils"]=t():e["hsu-utils"]=t()}(this,(()=>(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r="+",o="-",n="|",a=" ",u="";function i(e){for(var t=0,r=0,o=e;r<o.length;r++){var n=o[r];t+=n.charCodeAt(0)<128&&n.charCodeAt(0)>=0?1:2}return t}function f(e,t){void 0===t&&(t=!1);var n=e.length,a="";return e.forEach((function(e,i){a+=r+function(e){for(var t="",r=0;r<=e;r++)t+=o;return t}(e+1),a+=i===n-1?r+(t?u:"\n"):u})),a}function l(e){for(var t="",r=0;r<=e;r++)t+=a;return t}t.default=function(e,t){var r=e.length,o=function(e){for(var t=Object.keys(e[0]).map((function(e){return+e})),r=0,o=e;r<o.length;r++)o[r].forEach((function(e,r){var o=i(e.toString());t[r]=Math.max(o,t[r])}));return t}(e),c="";e.forEach((function(e,t){t<=1&&(c+=f(o)),c+=function(e,t){var r=e.length,o="";return e.forEach((function(e,f){var c=t[f],s="";isNaN(+c)?s+=a+(null!=c?c:"")+l(e-i((null!=c?c:"").toString())):s+=l(e-i(c.toString()))+c+a,o+=n+s,o+=f===r-1?n+"\n":u})),o}(o,e),t===r-1&&(c+=f(o,!0))})),console.log(c),t&&t(c)}},84:(e,t)=>{function r(e,t){void 0===t&&(t={});var r,o,n=t.benchmark,a=t.textType,u=void 0===a?"lowercase":a,i={lowercase:["零","一","二","三","四","五","六","七","八","九"],uppercase:["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]},f={lowercase:["","十","百","千"],uppercase:["","拾","佰","仟"]},l={lowercase:["","万","亿","兆"],uppercase:["","万","亿","兆"]},c="";if(n&&(e=+(e*=n).toFixed(4)),e>1e16)return"超出转换范围";var s=e.toString();if(r=s.split(".")[0],o=s.split(".")[1],r)for(var d=0,p=0;p<r.length;p++){var v=r.length-p-1,y=+r[p],h=Math.floor(v/4),b=v%(4*(0===h?1:h));0==+r[p]?d++:(d>0&&(c+=i[u][0],d=0),c+="".concat(i[u][y]+f[u][b]),v%4==0&&(c+=l[u][h]))}if(o){c+="点";for(p=0;p<o.length;p++){var g=+o[p];0==+o[p]?c+="".concat(i[u][0]):c+="".concat(i[u][g])}}return""===c&&(c+=i[u][0]),c}Object.defineProperty(t,"__esModule",{value:!0}),t.toChineseNum=void 0,t.toChineseNum=r;var o={toChineseNum:r};t.default=o},819:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(243);t.default=function e(t){if("date"===(0,o.Typeof)(t))return new Date(t.toISOString());if("formdata"===(0,o.Typeof)(t)){var r=t,n=new FormData;return r.forEach((function(e,t){n.append(t,e)})),n}if(Array.isArray(t))return t.map((function(t){return"object"==typeof t?e(t):t}));if(t&&"object"===(0,o.Typeof)(t)){var a=t,u={};return Object.keys(a).forEach((function(t){var r=a[t];u[t]="object"==typeof r?e(r):r})),u}return t}},962:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ObjEqual=t.ValEqual=t.TypeEqual=void 0;var o=r(243);function n(e,t){return(0,o.Typeof)(e)===(0,o.Typeof)(t)}function a(e,t){return null===e&&void 0===t||void 0===e&&null===t||("object"==typeof e&&"object"==typeof t?u(e,t):"function"==typeof e&&"function"==typeof t?JSON.stringify(e)===JSON.stringify(t):e===t)}function u(e,t){var r=!1,n=(0,o.deepCopy)(e),u=(0,o.deepCopy)(t);if(null!==n&&null!==u){if(Array.isArray(n)&&Array.isArray(u))if(n.sort(),u.sort(),n.length!==u.length)r=!1;else{r=!0;for(var i=0;i<n.length&&(r=a(n[i],u[i]));i++);}else if("object"==typeof n&&"object"==typeof u)if(Object.keys(n).length!==Object.keys(u).length)r=!1;else for(var f in r=!0,n)if(!(r=a(n[f],u[f])))break}else null===n&&null===u&&(r=!0);return r}t.TypeEqual=n,t.ValEqual=a,t.ObjEqual=u;var i={ValEqual:a,TypeEqual:n,ObjEqual:u};t.default=i},285:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){void 0===t&&(t={});var r=t.style,o=void 0===r?"normal":r,n=t.variant,a=void 0===n?"normal":n,u=t.weight,i=void 0===u?"normal":u,f=t.size,l=void 0===f?12:f,c=t.lineHeight,s=void 0===c?1:c,d=t.family,p=void 0===d?'微软雅黑, "Microsoft YaHei", -apple-system':d,v=document.createElement("canvas").getContext("2d");return v.font="".concat(o," ").concat(a," ").concat(i," ").concat(l,"px/").concat(s," ").concat(p),+(+v.measureText(e).width.toFixed(2)+.01).toFixed(2)}},332:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=Object.prototype.toString.call(e),r=new RegExp(" (.+?)]");return t.match(r)[1].toLowerCase()}},243:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ConvertNumbers=t.get_string_width=t.Typeof=t.Equal=t.deepCopy=t.console_table=void 0;var n=o(r(442));t.console_table=n.default;var a=o(r(819));t.deepCopy=a.default;var u=o(r(962));t.Equal=u.default;var i=o(r(332));t.Typeof=i.default;var f=o(r(285));t.get_string_width=f.default;var l=o(r(84));t.ConvertNumbers=l.default}},t={};var r=function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o].call(a.exports,a,a.exports,r),a.exports}(243);return r})()));
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * hsu-utils v0.0.7
3
+ * hsu-utils v0.0.10-alpha.1
4
4
  *
5
5
  * some front-end utils
6
6
  *
@@ -0,0 +1,10 @@
1
+ export type TextType = 'lowercase' | 'uppercase';
2
+ export interface C_Options {
3
+ benchmark?: number;
4
+ textType?: TextType;
5
+ }
6
+ export declare function toChineseNum(num: number, options?: C_Options): string;
7
+ declare const ConvertNumbers: {
8
+ toChineseNum: typeof toChineseNum;
9
+ };
10
+ export default ConvertNumbers;
@@ -0,0 +1,71 @@
1
+ export function toChineseNum(num, options = {}) {
2
+ const { benchmark, textType = 'lowercase' } = options;
3
+ const cnNums = {
4
+ lowercase: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
5
+ uppercase: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
6
+ };
7
+ const cnIntRadice = {
8
+ lowercase: ['', '十', '百', '千'],
9
+ uppercase: ['', '拾', '佰', '仟']
10
+ };
11
+ const cnIntUnits = {
12
+ lowercase: ['', '万', '亿', '兆'],
13
+ uppercase: ['', '万', '亿', '兆']
14
+ };
15
+ const maxNum = 9999999999999999.9999999999999999;
16
+ let integerNum = undefined;
17
+ let decimalNum = undefined;
18
+ let chineseStr = '';
19
+ if (benchmark) {
20
+ num *= benchmark;
21
+ num = +num.toFixed(4);
22
+ }
23
+ if (num > maxNum) {
24
+ return '超出转换范围';
25
+ }
26
+ const moneyStr = num.toString();
27
+ integerNum = moneyStr.split('.')[0];
28
+ decimalNum = moneyStr.split('.')[1];
29
+ if (integerNum) {
30
+ let zeroCount = 0;
31
+ for (let i = 0; i < integerNum.length; i++) {
32
+ const index = integerNum.length - i - 1;
33
+ const num = +integerNum[i];
34
+ const units = Math.floor(index / 4);
35
+ const radice = index % (4 * (units === 0 ? 1 : units));
36
+ if (+integerNum[i] === 0) {
37
+ zeroCount++;
38
+ }
39
+ else {
40
+ if (zeroCount > 0) {
41
+ chineseStr += cnNums[textType][0];
42
+ zeroCount = 0;
43
+ }
44
+ chineseStr += `${cnNums[textType][num] + cnIntRadice[textType][radice]}`;
45
+ if (index % 4 === 0) {
46
+ chineseStr += cnIntUnits[textType][units];
47
+ }
48
+ }
49
+ }
50
+ }
51
+ if (decimalNum) {
52
+ chineseStr += '点';
53
+ for (let i = 0; i < decimalNum.length; i++) {
54
+ const num = +decimalNum[i];
55
+ if (+decimalNum[i] === 0) {
56
+ chineseStr += `${cnNums[textType][0]}`;
57
+ }
58
+ else {
59
+ chineseStr += `${cnNums[textType][num]}`;
60
+ }
61
+ }
62
+ }
63
+ if (chineseStr === '') {
64
+ chineseStr += cnNums[textType][0];
65
+ }
66
+ return chineseStr;
67
+ }
68
+ const ConvertNumbers = {
69
+ toChineseNum
70
+ };
71
+ export default ConvertNumbers;
@@ -1 +1,10 @@
1
- export default function get_string_width(str: string): number;
1
+ interface Font {
2
+ style?: string;
3
+ variant?: string;
4
+ weight?: string;
5
+ size?: number;
6
+ lineHeight?: number;
7
+ family?: string;
8
+ }
9
+ export default function get_string_width(str: string, font?: Font): number;
10
+ export {};
@@ -1,7 +1,9 @@
1
- export default function get_string_width(str) {
2
- let width = 0;
3
- for (const char of str) {
4
- width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 0.5 : 1;
5
- }
1
+ export default function get_string_width(str, font = {}) {
2
+ const { style = 'normal', variant = 'normal', weight = 'normal', size = 12, lineHeight = 1, family: fontFamily = '微软雅黑, "Microsoft YaHei", -apple-system' } = font;
3
+ const canvas = document.createElement('canvas');
4
+ const ctx = canvas.getContext('2d');
5
+ ctx.font = `${style} ${variant} ${weight} ${size}px/${lineHeight} ${fontFamily}`;
6
+ const metrics = ctx.measureText(str);
7
+ const width = +(+metrics.width.toFixed(2) + 0.01).toFixed(2);
6
8
  return width;
7
9
  }
package/es/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import deepCopy from './DeepCopy';
3
3
  import Equal from './Equal';
4
4
  import Typeof from './Typeof';
5
5
  import get_string_width from './GetStrWidth';
6
- export { console_table, deepCopy, Equal, Typeof, get_string_width };
6
+ import ConvertNumbers from './ConvertNumbers';
7
+ export { console_table, deepCopy, Equal, Typeof, get_string_width, ConvertNumbers };
7
8
  import { ConsoleData } from './ConsoleTable';
8
9
  export type { ConsoleData };
package/es/index.js CHANGED
@@ -3,4 +3,5 @@ import deepCopy from './DeepCopy';
3
3
  import Equal from './Equal';
4
4
  import Typeof from './Typeof';
5
5
  import get_string_width from './GetStrWidth';
6
- export { console_table, deepCopy, Equal, Typeof, get_string_width };
6
+ import ConvertNumbers from './ConvertNumbers';
7
+ export { console_table, deepCopy, Equal, Typeof, get_string_width, ConvertNumbers };
@@ -0,0 +1,10 @@
1
+ export type TextType = 'lowercase' | 'uppercase';
2
+ export interface C_Options {
3
+ benchmark?: number;
4
+ textType?: TextType;
5
+ }
6
+ export declare function toChineseNum(num: number, options?: C_Options): string;
7
+ declare const ConvertNumbers: {
8
+ toChineseNum: typeof toChineseNum;
9
+ };
10
+ export default ConvertNumbers;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toChineseNum = void 0;
4
+ function toChineseNum(num, options) {
5
+ if (options === void 0) { options = {}; }
6
+ var benchmark = options.benchmark, _a = options.textType, textType = _a === void 0 ? 'lowercase' : _a;
7
+ var cnNums = {
8
+ lowercase: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
9
+ uppercase: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
10
+ };
11
+ var cnIntRadice = {
12
+ lowercase: ['', '十', '百', '千'],
13
+ uppercase: ['', '拾', '佰', '仟']
14
+ };
15
+ var cnIntUnits = {
16
+ lowercase: ['', '万', '亿', '兆'],
17
+ uppercase: ['', '万', '亿', '兆']
18
+ };
19
+ var maxNum = 9999999999999999.9999999999999999;
20
+ var integerNum = undefined;
21
+ var decimalNum = undefined;
22
+ var chineseStr = '';
23
+ if (benchmark) {
24
+ num *= benchmark;
25
+ num = +num.toFixed(4);
26
+ }
27
+ if (num > maxNum) {
28
+ return '超出转换范围';
29
+ }
30
+ var moneyStr = num.toString();
31
+ integerNum = moneyStr.split('.')[0];
32
+ decimalNum = moneyStr.split('.')[1];
33
+ if (integerNum) {
34
+ var zeroCount = 0;
35
+ for (var i = 0; i < integerNum.length; i++) {
36
+ var index = integerNum.length - i - 1;
37
+ var num_1 = +integerNum[i];
38
+ var units = Math.floor(index / 4);
39
+ var radice = index % (4 * (units === 0 ? 1 : units));
40
+ if (+integerNum[i] === 0) {
41
+ zeroCount++;
42
+ }
43
+ else {
44
+ if (zeroCount > 0) {
45
+ chineseStr += cnNums[textType][0];
46
+ zeroCount = 0;
47
+ }
48
+ chineseStr += "".concat(cnNums[textType][num_1] + cnIntRadice[textType][radice]);
49
+ if (index % 4 === 0) {
50
+ chineseStr += cnIntUnits[textType][units];
51
+ }
52
+ }
53
+ }
54
+ }
55
+ if (decimalNum) {
56
+ chineseStr += '点';
57
+ for (var i = 0; i < decimalNum.length; i++) {
58
+ var num_2 = +decimalNum[i];
59
+ if (+decimalNum[i] === 0) {
60
+ chineseStr += "".concat(cnNums[textType][0]);
61
+ }
62
+ else {
63
+ chineseStr += "".concat(cnNums[textType][num_2]);
64
+ }
65
+ }
66
+ }
67
+ if (chineseStr === '') {
68
+ chineseStr += cnNums[textType][0];
69
+ }
70
+ return chineseStr;
71
+ }
72
+ exports.toChineseNum = toChineseNum;
73
+ var ConvertNumbers = {
74
+ toChineseNum: toChineseNum
75
+ };
76
+ exports.default = ConvertNumbers;
@@ -1 +1,10 @@
1
- export default function get_string_width(str: string): number;
1
+ interface Font {
2
+ style?: string;
3
+ variant?: string;
4
+ weight?: string;
5
+ size?: number;
6
+ lineHeight?: number;
7
+ family?: string;
8
+ }
9
+ export default function get_string_width(str: string, font?: Font): number;
10
+ export {};
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function get_string_width(str) {
4
- var width = 0;
5
- for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {
6
- var char = str_1[_i];
7
- width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 0.5 : 1;
8
- }
3
+ function get_string_width(str, font) {
4
+ if (font === void 0) { font = {}; }
5
+ var _a = font.style, style = _a === void 0 ? 'normal' : _a, _b = font.variant, variant = _b === void 0 ? 'normal' : _b, _c = font.weight, weight = _c === void 0 ? 'normal' : _c, _d = font.size, size = _d === void 0 ? 12 : _d, _e = font.lineHeight, lineHeight = _e === void 0 ? 1 : _e, _f = font.family, fontFamily = _f === void 0 ? '微软雅黑, "Microsoft YaHei", -apple-system' : _f;
6
+ var canvas = document.createElement('canvas');
7
+ var ctx = canvas.getContext('2d');
8
+ ctx.font = "".concat(style, " ").concat(variant, " ").concat(weight, " ").concat(size, "px/").concat(lineHeight, " ").concat(fontFamily);
9
+ var metrics = ctx.measureText(str);
10
+ var width = +(+metrics.width.toFixed(2) + 0.01).toFixed(2);
9
11
  return width;
10
12
  }
11
13
  exports.default = get_string_width;
package/lib/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import deepCopy from './DeepCopy';
3
3
  import Equal from './Equal';
4
4
  import Typeof from './Typeof';
5
5
  import get_string_width from './GetStrWidth';
6
- export { console_table, deepCopy, Equal, Typeof, get_string_width };
6
+ import ConvertNumbers from './ConvertNumbers';
7
+ export { console_table, deepCopy, Equal, Typeof, get_string_width, ConvertNumbers };
7
8
  import { ConsoleData } from './ConsoleTable';
8
9
  export type { ConsoleData };
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.get_string_width = exports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;
6
+ exports.ConvertNumbers = exports.get_string_width = exports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;
7
7
  var ConsoleTable_1 = __importDefault(require("./ConsoleTable"));
8
8
  exports.console_table = ConsoleTable_1.default;
9
9
  var DeepCopy_1 = __importDefault(require("./DeepCopy"));
@@ -14,3 +14,5 @@ var Typeof_1 = __importDefault(require("./Typeof"));
14
14
  exports.Typeof = Typeof_1.default;
15
15
  var GetStrWidth_1 = __importDefault(require("./GetStrWidth"));
16
16
  exports.get_string_width = GetStrWidth_1.default;
17
+ var ConvertNumbers_1 = __importDefault(require("./ConvertNumbers"));
18
+ exports.ConvertNumbers = ConvertNumbers_1.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hsu-utils",
3
- "version": "0.0.8",
3
+ "version": "0.0.10-alpha.1",
4
4
  "description": "some front-end utils",
5
5
  "repository": "git@github.com:VitaTsui/hsu-utils.git",
6
6
  "author": "VitaHsu <vitahsu7@gmail.com>",
@@ -32,7 +32,8 @@
32
32
  "test": "jest",
33
33
  "publish:patch": "yarn build && yarn publish --new-version patch",
34
34
  "publish:minor": "yarn build && yarn publish --new-version minor",
35
- "publish:major": "yarn build && yarn publish --new-version major"
35
+ "publish:major": "yarn build && yarn publish --new-version major",
36
+ "publish:alpha": "yarn build && yarn publish --tag alpha"
36
37
  },
37
38
  "devDependencies": {
38
39
  "@jest/globals": "^29.5.0",
@@ -40,6 +41,7 @@
40
41
  "@types/jest": "^29.5.2",
41
42
  "cross-env": "^7.0.3",
42
43
  "jest": "^29.5.0",
44
+ "jest-canvas-mock": "^2.5.2",
43
45
  "jest-environment-jsdom": "^29.5.0",
44
46
  "jsdom": "^22.1.0",
45
47
  "rimraf": "^5.0.1",