Cleanup
This commit is contained in:
parent
396ff944a4
commit
7666d6a3e6
@ -107,45 +107,20 @@ class Translator {
|
|||||||
|
|
||||||
findTerm(text) {
|
findTerm(text) {
|
||||||
return this.findTermGroups(text).then(deinflectGroups => {
|
return this.findTermGroups(text).then(deinflectGroups => {
|
||||||
let definitions = [];
|
const definitions = [];
|
||||||
for (const key in deinflectGroups) {
|
for (const key in deinflectGroups) {
|
||||||
definitions.push(deinflectGroups[key]);
|
definitions.push(deinflectGroups[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
definitions = definitions.sort((v1, v2) => {
|
|
||||||
const sl1 = v1.source.length;
|
|
||||||
const sl2 = v2.source.length;
|
|
||||||
if (sl1 > sl2) {
|
|
||||||
return -1;
|
|
||||||
} else if (sl1 < sl2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const s1 = v1.score;
|
|
||||||
const s2 = v2.score;
|
|
||||||
if (s1 > s2) {
|
|
||||||
return -1;
|
|
||||||
} else if (s1 < s2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const rl1 = v1.rules.length;
|
|
||||||
const rl2 = v2.rules.length;
|
|
||||||
if (rl1 < rl2) {
|
|
||||||
return -1;
|
|
||||||
} else if (rl1 > rl2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return v2.expression.localeCompare(v1.expression);
|
|
||||||
});
|
|
||||||
|
|
||||||
let length = 0;
|
let length = 0;
|
||||||
for (const result of definitions) {
|
for (const result of definitions) {
|
||||||
length = Math.max(length, result.source.length);
|
length = Math.max(length, result.source.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {definitions, length};
|
return {
|
||||||
|
length,
|
||||||
|
definitions: sortTermDefs(definitions)
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +167,7 @@ class Translator {
|
|||||||
desc: definition.entities[tag] || '',
|
desc: definition.entities[tag] || '',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.applyTagMeta(tagItem);
|
applyTagMeta(tagItem, this.tagMeta);
|
||||||
tagItems.push(tagItem);
|
tagItems.push(tagItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +183,7 @@ class Translator {
|
|||||||
expression: definition.expression,
|
expression: definition.expression,
|
||||||
reading: definition.reading,
|
reading: definition.reading,
|
||||||
glossary: definition.glossary,
|
glossary: definition.glossary,
|
||||||
tags: Translator.sortTags(tagItems)
|
tags: sortTags(tagItems)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -225,42 +200,13 @@ class Translator {
|
|||||||
desc: '',
|
desc: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.applyTagMeta(tagItem);
|
applyTagMeta(tagItem, this.tagMeta);
|
||||||
tagItems.push(tagItem);
|
tagItems.push(tagItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
definition.tags = Translator.sortTags(tagItems);
|
definition.tags = sortTags(tagItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
return definitions;
|
return definitions;
|
||||||
}
|
}
|
||||||
|
|
||||||
applyTagMeta(tag) {
|
|
||||||
const symbol = tag.name.split(':')[0];
|
|
||||||
for (const prop in this.tagMeta[symbol] || {}) {
|
|
||||||
tag[prop] = this.tagMeta[symbol][prop];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static sortTags(tags) {
|
|
||||||
return tags.sort((v1, v2) => {
|
|
||||||
const order1 = v1.order;
|
|
||||||
const order2 = v2.order;
|
|
||||||
if (order1 < order2) {
|
|
||||||
return -1;
|
|
||||||
} else if (order1 > order2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const name1 = v1.name;
|
|
||||||
const name2 = v2.name;
|
|
||||||
if (name1 < name2) {
|
|
||||||
return -1;
|
|
||||||
} else if (name1 > name2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -44,3 +44,63 @@ function isKanji(c) {
|
|||||||
return code >= 0x4e00 && code < 0x9fb0 || code >= 0x3400 && code < 0x4dc0;
|
return code >= 0x4e00 && code < 0x9fb0 || code >= 0x3400 && code < 0x4dc0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sortTags(tags) {
|
||||||
|
return tags.sort((v1, v2) => {
|
||||||
|
const order1 = v1.order;
|
||||||
|
const order2 = v2.order;
|
||||||
|
if (order1 < order2) {
|
||||||
|
return -1;
|
||||||
|
} else if (order1 > order2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const name1 = v1.name;
|
||||||
|
const name2 = v2.name;
|
||||||
|
if (name1 < name2) {
|
||||||
|
return -1;
|
||||||
|
} else if (name1 > name2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function sortTermDefs(definitions) {
|
||||||
|
return definitions.sort((v1, v2) => {
|
||||||
|
const sl1 = v1.source.length;
|
||||||
|
const sl2 = v2.source.length;
|
||||||
|
if (sl1 > sl2) {
|
||||||
|
return -1;
|
||||||
|
} else if (sl1 < sl2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const s1 = v1.score;
|
||||||
|
const s2 = v2.score;
|
||||||
|
if (s1 > s2) {
|
||||||
|
return -1;
|
||||||
|
} else if (s1 < s2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rl1 = v1.rules.length;
|
||||||
|
const rl2 = v2.rules.length;
|
||||||
|
if (rl1 < rl2) {
|
||||||
|
return -1;
|
||||||
|
} else if (rl1 > rl2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return v2.expression.localeCompare(v1.expression);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyTagMeta(tag, meta) {
|
||||||
|
const symbol = tag.name.split(':')[0];
|
||||||
|
for (const prop in meta[symbol] || {}) {
|
||||||
|
tag[prop] = meta[symbol][prop];
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user