core: add String.prototype.formatFromArray api

This commit is contained in:
undefined committed 2020-10-31 23:12:07 +08:00
1 parent 89857de04f
commit 90c8bfefe2
2 files changed
+9 -4

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "2.13.31", "version": "2.13.32",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "dist/loader.js", "main": "dist/loader.js",
"typings": "dist/loader.d.ts", "typings": "dist/loader.d.ts",
+8 -3
View File
@@ -5,6 +5,7 @@ const locales = {};
declare global { declare global {
interface String { interface String {
format: (...args: Array<any>) => string; format: (...args: Array<any>) => string;
formatFromArray: (args: any[]) => string;
rawformat: (object: any) => string; rawformat: (object: any) => string;
translate: (...languages: string[]) => string; translate: (...languages: string[]) => string;
} }
@@ -20,15 +21,19 @@ String.prototype.format = function formatStr(...args) {
result = result.replace(reg, args[key]); result = result.replace(reg, args[key]);
} }
} }
} else { } else return this.formatFromArray(args);
}
return result;
};
String.prototype.formatFromArray = function formatStr(args) {
let result = this;
for (let i = 0; i < args.length; i++) { for (let i = 0; i < args.length; i++) {
if (args[i] !== undefined) { if (args[i] !== undefined) {
const reg = new RegExp(`(\\{)${i}(\\})`, 'g'); const reg = new RegExp(`(\\{)${i}(\\})`, 'g');
result = result.replace(reg, args[i]); result = result.replace(reg, args[i]);
} }
} }
}
}
return result; return result;
}; };