diff options
Diffstat (limited to 'ext/bg/js/backend.js')
| -rw-r--r-- | ext/bg/js/backend.js | 31 | 
1 files changed, 29 insertions, 2 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 56bd4fca..67197cf7 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -284,8 +284,35 @@ class Backend {          return results;      } -    _onApiTextParseMecab({text, optionsContext}) { -        return apiTextParseMecab(text, optionsContext); +    async _onApiTextParseMecab({text, optionsContext}) { +        const options = await this.getOptions(optionsContext); +        const results = {}; +        const rawResults = await this.mecab.parseText(text); +        for (const mecabName in rawResults) { +            const result = []; +            for (const parsedLine of rawResults[mecabName]) { +                for (const {expression, reading, source} of parsedLine) { +                    const term = []; +                    if (expression !== null && reading !== null) { +                        for (const {text, furigana} of jpDistributeFuriganaInflected( +                            expression, +                            jpKatakanaToHiragana(reading), +                            source +                        )) { +                            const reading = jpConvertReading(text, furigana, options.parsing.readingMode); +                            term.push({text, reading}); +                        } +                    } else { +                        const reading = jpConvertReading(source, null, options.parsing.readingMode); +                        term.push({text: source, reading}); +                    } +                    result.push(term); +                } +                result.push([{text: '\n'}]); +            } +            results[mecabName] = result; +        } +        return results;      }      _onApiDefinitionAdd({definition, mode, context, optionsContext}) {  |