aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/mecab.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/mecab.js')
-rw-r--r--ext/bg/js/mecab.js14
1 files changed, 13 insertions, 1 deletions
diff --git a/ext/bg/js/mecab.js b/ext/bg/js/mecab.js
index fba9b2eb..4c62c2b0 100644
--- a/ext/bg/js/mecab.js
+++ b/ext/bg/js/mecab.js
@@ -19,16 +19,20 @@
class Mecab {
constructor() {
+ this.port = null;
this.listeners = {};
this.sequence = 0;
- this.startListener();
}
async parseText(text) {
+ if (this.port === null) {
+ return {};
+ }
return await this.invoke('parse_text', {text});
}
startListener() {
+ if (this.port !== null) { return; }
this.port = chrome.runtime.connectNative('yomichan_mecab');
this.port.onMessage.addListener((message) => {
const {sequence, data} = message;
@@ -41,6 +45,14 @@ class Mecab {
});
}
+ stopListener() {
+ if (this.port === null) { return; }
+ this.port.disconnect();
+ this.port = null;
+ this.listeners = {};
+ this.sequence = 0;
+ }
+
invoke(action, params) {
return new Promise((resolve, reject) => {
const sequence = this.sequence++;