fix: optimize terms function

This commit is contained in:
Gabe Yuan
2024-02-02 12:10:27 +08:00
parent dca54e0033
commit 4bce56207e

View File

@@ -46,7 +46,7 @@ export class Translator {
_eventName = genEventName(); _eventName = genEventName();
_mouseoverNode = null; _mouseoverNode = null;
_keepSelector = [null, null]; _keepSelector = [null, null];
_terms = new Map(); _terms = [];
_docTitle = ""; _docTitle = "";
// 显示 // 显示
@@ -111,13 +111,10 @@ export class Translator {
this._keepSelector = (rule.keepSelector || "") this._keepSelector = (rule.keepSelector || "")
.split(SHADOW_KEY) .split(SHADOW_KEY)
.map((item) => item.trim()); .map((item) => item.trim());
const terms = (rule.terms || "") this._terms = (rule.terms || "")
.split(/\n|;/) .split(/\n|;/)
.map((item) => item.split(",").map((item) => item.trim())) .map((item) => item.split(",").map((item) => item.trim()))
.filter(([term]) => Boolean(term)); .filter(([term]) => Boolean(term));
if (terms.length > 0) {
this._terms = new Map(terms);
}
if (rule.transOpen === "true") { if (rule.transOpen === "true") {
this._register(); this._register();
@@ -475,13 +472,15 @@ export class Translator {
} }
// 专业术语 // 专业术语
if (this._terms.size > 0) { if (this._terms.length > 0) {
const re = new RegExp([...this._terms.keys()].join("|"), "g"); for (let term of this._terms) {
q = q.replace(re, (term) => { const re = new RegExp(term[0], "g");
const text = `[${keeps.length}]`; q = q.replace(re, (t) => {
keeps.push(this._terms.get(term) || term); const text = `[${keeps.length}]`;
return text; keeps.push(term[1] || t);
}); return text;
});
}
} }
traEl = document.createElement(APP_LCNAME); traEl = document.createElement(APP_LCNAME);