summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/api.js32
-rw-r--r--ext/bg/js/backend.js30
2 files changed, 30 insertions, 32 deletions
diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js
index d361bde7..7a4c2dcf 100644
--- a/ext/bg/js/api.js
+++ b/ext/bg/js/api.js
@@ -37,36 +37,8 @@ function apiTermsFind(text, details, optionsContext) {
return utilBackend()._onApiTermsFind({text, details, optionsContext});
}
-async function apiTextParse(text, optionsContext) {
- const options = await apiOptionsGet(optionsContext);
- const translator = utilBackend().translator;
-
- const results = [];
- while (text.length > 0) {
- const term = [];
- const [definitions, sourceLength] = await translator.findTermsInternal(
- text.substring(0, options.scanning.length),
- dictEnabledSet(options),
- options.scanning.alphanumeric,
- {}
- );
- if (definitions.length > 0) {
- dictTermsSort(definitions);
- const {expression, reading} = definitions[0];
- const source = text.substring(0, sourceLength);
- for (const {text, furigana} of jpDistributeFuriganaInflected(expression, reading, source)) {
- const reading = jpConvertReading(text, furigana, options.parsing.readingMode);
- term.push({text, reading});
- }
- text = text.substring(source.length);
- } else {
- const reading = jpConvertReading(text[0], null, options.parsing.readingMode);
- term.push({text: text[0], reading});
- text = text.substring(1);
- }
- results.push(term);
- }
- return results;
+function apiTextParse(text, optionsContext) {
+ return utilBackend()._onApiTextParse({text, optionsContext});
}
async function apiTextParseMecab(text, optionsContext) {
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 4c3b3dfa..56bd4fca 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -254,8 +254,34 @@ class Backend {
return {length, definitions};
}
- _onApiTextParse({text, optionsContext}) {
- return apiTextParse(text, optionsContext);
+ async _onApiTextParse({text, optionsContext}) {
+ const options = await this.getOptions(optionsContext);
+ const results = [];
+ while (text.length > 0) {
+ const term = [];
+ const [definitions, sourceLength] = await this.translator.findTermsInternal(
+ text.substring(0, options.scanning.length),
+ dictEnabledSet(options),
+ options.scanning.alphanumeric,
+ {}
+ );
+ if (definitions.length > 0) {
+ dictTermsSort(definitions);
+ const {expression, reading} = definitions[0];
+ const source = text.substring(0, sourceLength);
+ for (const {text, furigana} of jpDistributeFuriganaInflected(expression, reading, source)) {
+ const reading = jpConvertReading(text, furigana, options.parsing.readingMode);
+ term.push({text, reading});
+ }
+ text = text.substring(source.length);
+ } else {
+ const reading = jpConvertReading(text[0], null, options.parsing.readingMode);
+ term.push({text: text[0], reading});
+ text = text.substring(1);
+ }
+ results.push(term);
+ }
+ return results;
}
_onApiTextParseMecab({text, optionsContext}) {