mecab refactoring and bugfix
This commit is contained in:
parent
f97877a209
commit
1f2eee449e
@ -101,6 +101,8 @@ class Backend {
|
||||
|
||||
if (options.parsing.enableMecabParser) {
|
||||
this.mecab.startListener();
|
||||
} else {
|
||||
this.mecab.stopListener();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,15 +34,7 @@ class Mecab {
|
||||
startListener() {
|
||||
if (this.port !== null) { return; }
|
||||
this.port = chrome.runtime.connectNative('yomichan_mecab');
|
||||
this.port.onMessage.addListener((message) => {
|
||||
const {sequence, data} = message;
|
||||
const {callback, timer} = this.listeners[sequence] || {};
|
||||
if (timer) {
|
||||
clearTimeout(timer);
|
||||
delete this.listeners[sequence];
|
||||
callback(data);
|
||||
}
|
||||
});
|
||||
this.port.onMessage.addListener(this.onNativeMessage.bind(this));
|
||||
}
|
||||
|
||||
stopListener() {
|
||||
@ -53,6 +45,15 @@ class Mecab {
|
||||
this.sequence = 0;
|
||||
}
|
||||
|
||||
onNativeMessage({sequence, data}) {
|
||||
if (this.listeners.hasOwnProperty(sequence)) {
|
||||
const {callback, timer} = this.listeners[sequence];
|
||||
clearTimeout(timer);
|
||||
callback(data);
|
||||
delete this.listeners[sequence];
|
||||
}
|
||||
}
|
||||
|
||||
invoke(action, params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const sequence = this.sequence++;
|
||||
|
@ -154,7 +154,6 @@ async function formWrite(options) {
|
||||
|
||||
function formSetupEventListeners() {
|
||||
$('input, select, textarea').not('.anki-model').not('.ignore-form-changes *').change(utilAsync(onFormOptionsChanged));
|
||||
$('#parsing-mecab-enable').change(onParseMecabChanged);
|
||||
$('.anki-model').change(utilAsync(onAnkiModelChanged));
|
||||
}
|
||||
|
||||
@ -441,20 +440,6 @@ function onMessage({action, params}, sender, callback) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Text parsing
|
||||
*/
|
||||
|
||||
function onParseMecabChanged(e) {
|
||||
const mecab = utilBackend().mecab;
|
||||
if (e.target.checked) {
|
||||
mecab.startListener();
|
||||
} else {
|
||||
mecab.stopListener();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Anki
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user