diff options
-rw-r--r-- | ext/bg/js/api.js | 32 | ||||
-rw-r--r-- | ext/bg/js/backend.js | 30 |
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}) { |