diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-02-08 17:53:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-08 17:53:12 -0500 |
commit | 69e8addb4722fa0b35bb7a8bb1d0107038a6d249 (patch) | |
tree | 179d850d5ef1866ce5fd7b8b68ff3981712d4c40 /ext/bg/js/backend.js | |
parent | 7b28c2c5329b0bb0fa74872f160ec6b2974654d0 (diff) |
Mecab refactor (#1357)
* Use private variables
* Use local variables
* Remove onError
* Use private functions
* Move results parsing
* Set up disconnect observation
* Add _clearPort
* Update API
* Rename
* Fix iterator
* Update parseText invocation
* Update parseText format
* Reorganize
* Update implementation and docs
* Fix some port setup issues
Diffstat (limited to 'ext/bg/js/backend.js')
-rw-r--r-- | ext/bg/js/backend.js | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 55905fab..67b17cc9 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -877,11 +877,7 @@ class Backend { this._anki.server = options.anki.server; this._anki.enabled = options.anki.enable; - if (options.parsing.enableMecabParser) { - this._mecab.startListener(); - } else { - this._mecab.stopListener(); - } + this._mecab.setEnabled(options.parsing.enableMecabParser); if (options.clipboard.enableBackgroundMonitor) { this._clipboardMonitor.start(); @@ -988,12 +984,19 @@ class Backend { async _textParseMecab(text, options) { const jp = this._japaneseUtil; const {parsing: {readingMode}} = options; + + let parseTextResults; + try { + parseTextResults = await this._mecab.parseText(text); + } catch (e) { + return []; + } + const results = []; - const rawResults = await this._mecab.parseText(text); - for (const [mecabName, parsedLines] of Object.entries(rawResults)) { + for (const {name, lines} of parseTextResults) { const result = []; - for (const parsedLine of parsedLines) { - for (const {expression, reading, source} of parsedLine) { + for (const line of lines) { + for (const {expression, reading, source} of line) { const term = []; for (const {text: text2, furigana} of jp.distributeFuriganaInflected( expression.length > 0 ? expression : source, @@ -1007,7 +1010,7 @@ class Backend { } result.push([{text: '\n', reading: ''}]); } - results.push([mecabName, result]); + results.push([name, result]); } return results; } |