refactor: 优化 utils,弃用 api

This commit is contained in:
unanmed 2024-11-07 22:15:28 +08:00
parent 8fc62e0e97
commit eca62f5dd0
2 changed files with 51 additions and 95 deletions

View File

@ -25,35 +25,6 @@ function utils() {
rightup: { x: 1, y: -1 }, rightup: { x: 1, y: -1 },
rightdown: { x: 1, y: 1 } rightdown: { x: 1, y: 1 }
}; };
const tokenSplit = new Set([
' ',
'(',
')',
'<',
'>',
',',
'.',
'/',
"'",
'"',
'[',
']',
'{',
'}',
'-',
'+',
'=',
'!',
'`',
'~',
';',
':',
'&',
'*',
'^',
'|',
'%'
]);
} }
utils.prototype._init = function () { utils.prototype._init = function () {
@ -187,11 +158,7 @@ utils.prototype.calValue = function (value, prefix) {
utils.prototype.unshift = function (a, b) { utils.prototype.unshift = function (a, b) {
if (!(a instanceof Array) || b == null) return; if (!(a instanceof Array) || b == null) return;
if (b instanceof Array) { if (b instanceof Array) {
core.clone(b) a.unshift(...b);
.reverse()
.forEach(function (e) {
a.unshift(e);
});
} else a.unshift(b); } else a.unshift(b);
return a; return a;
}; };
@ -200,9 +167,7 @@ utils.prototype.unshift = function (a, b) {
utils.prototype.push = function (a, b) { utils.prototype.push = function (a, b) {
if (!(a instanceof Array) || b == null) return; if (!(a instanceof Array) || b == null) return;
if (b instanceof Array) { if (b instanceof Array) {
core.clone(b).forEach(function (e) { a.push(...b);
a.push(e);
});
} else a.push(b); } else a.push(b);
return a; return a;
}; };
@ -471,16 +436,11 @@ utils.prototype.clone = function (data, filter, recursion) {
} }
// array // array
if (data instanceof Array) { if (data instanceof Array) {
var copy = []; return data.map((v, i) => {
for (var i in data) { if (!filter || filter(String(i), v)) {
if (!filter || filter(i, data[i])) return this.clone(v, recursion ? filter : null, recursion);
copy[i] = core.clone( }
data[i], });
recursion ? filter : null,
recursion
);
}
return copy;
} }
// 函数 // 函数
if (data instanceof Function) { if (data instanceof Function) {
@ -489,13 +449,14 @@ utils.prototype.clone = function (data, filter, recursion) {
// object // object
if (data instanceof Object) { if (data instanceof Object) {
var copy = {}; var copy = {};
for (var i in data) { for (const [key, value] of Object.entries(data)) {
if (data.hasOwnProperty(i) && (!filter || filter(i, data[i]))) if (!filter || filter(key, value)) {
copy[i] = core.clone( copy[key] = this.clone(
data[i], value,
recursion ? filter : null, recursion ? filter : null,
recursion recursion
); );
}
} }
return copy; return copy;
} }
@ -664,8 +625,7 @@ utils.prototype.arrayToRGB = function (color) {
nowG = this.clamp(parseInt(color[1]), 0, 255), nowG = this.clamp(parseInt(color[1]), 0, 255),
nowB = this.clamp(parseInt(color[2]), 0, 255); nowB = this.clamp(parseInt(color[2]), 0, 255);
return ( return (
'#' + '#' + ((nowR << 16) + (nowG << 8) + nowB).toString(16).padStart(6, '0')
((1 << 24) + (nowR << 16) + (nowG << 8) + nowB).toString(16).slice(1)
); );
}; };
@ -920,7 +880,7 @@ utils.prototype.subarray = function (a, b) {
}; };
utils.prototype.inArray = function (array, element) { utils.prototype.inArray = function (array, element) {
return array instanceof Array && array.indexOf(element) >= 0; return array instanceof Array && array.includes(element);
}; };
utils.prototype.clamp = function (x, a, b) { utils.prototype.clamp = function (x, a, b) {
@ -935,32 +895,7 @@ utils.prototype.getCookie = function (name) {
}; };
////// 设置statusBar的innerHTML会自动斜体和放缩也可以增加自定义css ////// ////// 设置statusBar的innerHTML会自动斜体和放缩也可以增加自定义css //////
utils.prototype.setStatusBarInnerHTML = function (name, value, css) { utils.prototype.setStatusBarInnerHTML = function (name, value, css) {};
if (!core.statusBar[name]) return;
if (typeof value == 'number') value = this.formatBigNumber(value);
var italic = /^[-a-zA-Z0-9`~!@#$%^&*()_=+\[{\]}\\|;:'",<.>\/?]*$/.test(
value
);
var style = 'font-style: ' + (italic ? 'italic' : 'normal') + '; ';
style +=
'text-shadow: #000 1px 0 0, #000 0 1px 0, #000 -1px 0 0, #000 0 -1px 0; ';
// 判定是否需要缩放
var length = this.strlen(value) || 1;
style += 'font-size: ' + Math.min(1, 7 / length) + 'em; ';
if (css) style += css;
var _style = core.statusBar[name].getAttribute('_style');
var _value = core.statusBar[name].getAttribute('_value');
if (_style == style) {
if (value == _value) return;
core.statusBar[name].children[0].innerText = value;
} else {
core.statusBar[name].innerHTML =
"<span class='_status' style='" + style + "'></span>";
core.statusBar[name].children[0].innerText = value;
core.statusBar[name].setAttribute('_style', style);
}
core.statusBar[name].setAttribute('_value', value);
};
utils.prototype.strlen = function (str) { utils.prototype.strlen = function (str) {
var count = 0; var count = 0;

51
src/types/util.d.ts vendored
View File

@ -1,11 +1,13 @@
/** 工具类 主要用来进行一些辅助函数的计算 */ /** 工具类 主要用来进行一些辅助函数的计算 */
interface Utils { interface Utils {
/** /**
* @deprecated
* *
*/ */
readonly scan: DeepReadonly<Scan>; readonly scan: DeepReadonly<Scan>;
/** /**
* @deprecated
* *
*/ */
readonly scan2: DeepReadonly<Scan2>; readonly scan2: DeepReadonly<Scan2>;
@ -65,6 +67,7 @@ interface Utils {
push<A extends any[], B extends any[]>(a: A, b: B): [...A, ...B]; push<A extends any[], B extends any[]>(a: A, b: B): [...A, ...B];
/** /**
* @deprecated
* *
* @param * @param
*/ */
@ -94,6 +97,7 @@ interface Utils {
removeLocalStorage(key: string): void; removeLocalStorage(key: string): void;
/** /**
* @deprecated
* localforage * localforage
* @param key * @param key
* @param value * @param value
@ -108,6 +112,7 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* localforage读出一段数据 * localforage读出一段数据
*/ */
getLocalForage<T>( getLocalForage<T>(
@ -118,6 +123,7 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* localforage的数据 * localforage的数据
*/ */
removeLocalForage( removeLocalForage(
@ -127,12 +133,14 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* localforage所有的数据 * localforage所有的数据
* @param callback * @param callback
*/ */
clearLocalForage(callback?: (err?: Error) => void): void; clearLocalForage(callback?: (err?: Error) => void): void;
/** /**
* @deprecated
* localforage的数据 * localforage的数据
* @param iteratee * @param iteratee
* @param callback * @param callback
@ -143,12 +151,14 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* localforage数据的所有的键 * localforage数据的所有的键
* @param callback * @param callback
*/ */
keysLocalForage(callback?: (err: any, keys: string[]) => void): void; keysLocalForage(callback?: (err: any, keys: string[]) => void): void;
/** /**
* @deprecated
* localforage数据的数据量 * localforage数据的数据量
* @param callback * @param callback
*/ */
@ -157,6 +167,7 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* 适用于global:xxx * 适用于global:xxx
* @example core.setBlobal('一周目已通关', true); // 设置全局存储“一周目已通关”为true方便二周目游戏中的新要素。 * @example core.setBlobal('一周目已通关', true); // 设置全局存储“一周目已通关”为true方便二周目游戏中的新要素。
* @param key * @param key
@ -165,6 +176,7 @@ interface Utils {
setGlobal(key: string, value?: any): void; setGlobal(key: string, value?: any): void;
/** /**
* @deprecated
* 适用于global:xxx * 适用于global:xxx
* @example if (core.getGlobal('一周目已通关', false) === true) core.getItem('dagger'); // 二周目游戏进行到此处时会获得一把屠龙匕首 * @example if (core.getGlobal('一周目已通关', false) === true) core.getItem('dagger'); // 二周目游戏进行到此处时会获得一把屠龙匕首
* @param key * @param key
@ -211,6 +223,7 @@ interface Utils {
): HTMLImageElement[]; ): HTMLImageElement[];
/** /**
* @deprecated
* *
* @param date * @param date
* @returns 格式: yyyy-mm-dd hh:mm:ss * @returns 格式: yyyy-mm-dd hh:mm:ss
@ -218,6 +231,7 @@ interface Utils {
formatDate(date?: Date): string; formatDate(date?: Date): string;
/** /**
* @deprecated
* *
* @param date * @param date
* @returns 格式: yyyymmddhhmmss * @returns 格式: yyyymmddhhmmss
@ -225,6 +239,7 @@ interface Utils {
formatDate2(date?: Date): string; formatDate2(date?: Date): string;
/** /**
* @deprecated
* *
* @param time * @param time
* @returns 格式: hh:mm:ss * @returns 格式: hh:mm:ss
@ -238,6 +253,7 @@ interface Utils {
setTwoDigits(x: number): string; setTwoDigits(x: number): string;
/** /**
* @deprecated
* n位数显示 * n位数显示
* @param x * @param x
* @param n * @param n
@ -245,6 +261,7 @@ interface Utils {
setDigits(x: number, n: number): string; setDigits(x: number, n: number): string;
/** /**
* @deprecated
* *
* @param size * @param size
* @returns xx.xxB KB MB * @returns xx.xxB KB MB
@ -252,6 +269,7 @@ interface Utils {
formatSize(size: number): string; formatSize(size: number): string;
/** /**
* @deprecated
* 10000w,e,z,j,g * 10000w,e,z,j,g
* @example core.formatBigNumber(123456789); // "12346w" * @example core.formatBigNumber(123456789); // "12346w"
* @param x * @param x
@ -259,6 +277,9 @@ interface Utils {
* @returns * @returns
*/ */
formatBigNumber<T extends string>(x: T, onMap?: number): T; formatBigNumber<T extends string>(x: T, onMap?: number): T;
/**
* @deprecated
*/
formatBigNumber(x: number | string, onMap?: number | boolean): string; formatBigNumber(x: number | string, onMap?: number | boolean): string;
/** /**
@ -288,6 +309,7 @@ interface Utils {
arrayToRGBA(color: Color): _RGBA; arrayToRGBA(color: Color): _RGBA;
/** /**
* @deprecated
* base64压缩 * base64压缩
* @example core.encodeRoute(core.status.route); // 一压当前录像 * @example core.encodeRoute(core.status.route); // 一压当前录像
* @param route 0-9A-Za-z和下划线 * @param route 0-9A-Za-z和下划线
@ -297,6 +319,7 @@ interface Utils {
encodeRoute(route: string[]): string; encodeRoute(route: string[]): string;
/** /**
* @deprecated
* *
* @example core.decodeRoute(core.encodeRoute(core.status.route)); // 一压当前录像再解压-_-| * @example core.decodeRoute(core.encodeRoute(core.status.route)); // 一压当前录像再解压-_-|
* @param route * @param route
@ -343,27 +366,13 @@ interface Utils {
clamp(x: number, a: number, b: number): number; clamp(x: number, a: number, b: number): number;
/** /**
* @deprecated
* 访cookie * 访cookie
*/ */
getCookie(name: string): string; getCookie(name: string): string;
/** /**
* @deprecated * @deprecated
*
* @example
* // 更新状态栏中的主角生命,使用加载画面的宣传色
* core.setStatusBarInnerHTML('hp', core.status.hero.hp, 'color: #66CCFF');
* @param name 'hp', 'atk', 'def'core.statusBar中的一个合法项
* @param value 6
* @param css css样式
*/
setStatusBarInnerHTML(
name: string,
value: string | number,
css?: string
): void;
/**
* Verdana不是等宽字体 * Verdana不是等宽字体
* @example core.strlen('无敌ad'); // 6 * @example core.strlen('无敌ad'); // 6
* @param str * @param str
@ -398,6 +407,7 @@ interface Utils {
matchRegex(pattern: string, string: string): string; matchRegex(pattern: string, string: string): string;
/** /**
* @deprecated
* base64加密 * base64加密
* @example * @example
* core.encodeBase64('If you found this note in a small wooden box with a heart on it'); * core.encodeBase64('If you found this note in a small wooden box with a heart on it');
@ -408,6 +418,7 @@ interface Utils {
encodeBase64(str: string): string; encodeBase64(str: string): string;
/** /**
* @deprecated
* base64解密 * base64解密
* @example * @example
* core.decodeBase64('SWYgeW91IGZvdW5kIHRoaXMgbm90ZSBpbiBhIHNtYWxsIHdvb2RlbiBib3ggd2l0aCBhIGhlYXJ0IG9uIGl0'); * core.decodeBase64('SWYgeW91IGZvdW5kIHRoaXMgbm90ZSBpbiBhIHNtYWxsIHdvb2RlbiBib3ggd2l0aCBhIGhlYXJ0IG9uIGl0');
@ -418,6 +429,7 @@ interface Utils {
decodeBase64(str: string): string; decodeBase64(str: string): string;
/** /**
* @deprecated
* SL的随机数 * SL的随机数
* @exmaple 1 + core.rand(6); // 随机生成一个小于7的正整数模拟骰子的效果 * @exmaple 1 + core.rand(6); // 随机生成一个小于7的正整数模拟骰子的效果
* @param num num的随机自然数1 * @param num num的随机自然数1
@ -426,6 +438,7 @@ interface Utils {
rand(num?: number): number; rand(num?: number): number;
/** /**
* @deprecated
* SL的随机数 * SL的随机数
* @exmaple 1 + core.rand2(6); // 随机生成一个小于7的正整数模拟骰子的效果 * @exmaple 1 + core.rand2(6); // 随机生成一个小于7的正整数模拟骰子的效果
* @param num 02147483648 * @param num 02147483648
@ -434,6 +447,7 @@ interface Utils {
rand2(num?: number): number; rand2(num?: number): number;
/** /**
* @deprecated
* [] * []
* @param success * @param success
* @param error * @param error
@ -448,12 +462,14 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* [] * []
* @param content * @param content
*/ */
readFileContent(content: string): void; readFileContent(content: string): void;
/** /**
* @deprecated
* *
* @example core.download('route.txt', core.status.route); // 弹窗请求下载录像 * @example core.download('route.txt', core.status.route); // 弹窗请求下载录像
* @param filename * @param filename
@ -462,6 +478,7 @@ interface Utils {
download(filename: string, content: string | string[]): void; download(filename: string, content: string | string[]): void;
/** /**
* @deprecated
* *
* @param data 西 * @param data 西
*/ */
@ -512,11 +529,13 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* guid * guid
*/ */
getGuid(): string; getGuid(): string;
/** /**
* @deprecated
* *
* @param obj * @param obj
*/ */
@ -530,6 +549,7 @@ interface Utils {
same(a: any, b: any): boolean; same(a: any, b: any): boolean;
/** /**
* @deprecated
* *
*/ */
unzip( unzip(
@ -541,6 +561,7 @@ interface Utils {
): void; ): void;
/** /**
* @deprecated
* HTTP请求 [] * HTTP请求 []
* @param type * @param type
* @param url * @param url