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}) { |