diff options
Diffstat (limited to 'ext/fg')
-rw-r--r-- | ext/fg/js/driver.js | 8 | ||||
-rw-r--r-- | ext/fg/js/util.js | 18 |
2 files changed, 18 insertions, 8 deletions
diff --git a/ext/fg/js/driver.js b/ext/fg/js/driver.js index 2324e6b2..5191f18d 100644 --- a/ext/fg/js/driver.js +++ b/ext/fg/js/driver.js @@ -168,13 +168,13 @@ window.driver = new class { } else { textSource.setEndOffset(length); - const sentence = docSentenceExtract(textSource, this.options.anki.sentenceExt); + const cloze = docClozeExtract(textSource, this.options.anki.sentenceExt); const url = window.location.href; this.popup.showTermDefs( textSource.getRect(), definitions, this.options, - {sentence, url} + {cloze, url} ); this.lastTextSource = textSource; @@ -194,13 +194,13 @@ window.driver = new class { if (definitions.length === 0) { return false; } else { - const sentence = docSentenceExtract(textSource, this.options.anki.sentenceExt); + const cloze = docClozeExtract(textSource, this.options.anki.sentenceExt); const url = window.location.href; this.popup.showKanjiDefs( textSource.getRect(), definitions, this.options, - {sentence, url} + {cloze, url} ); this.lastTextSource = textSource; diff --git a/ext/fg/js/util.js b/ext/fg/js/util.js index be809bfb..0a95b24d 100644 --- a/ext/fg/js/util.js +++ b/ext/fg/js/util.js @@ -152,7 +152,7 @@ function docRangeFromPoint(point, imposter) { return null; } -function docSentenceExtract(source, extent) { +function docClozeExtract(source, extent) { const quotesFwd = {'「': '」', '『': '』', "'": "'", '"': '"'}; const quotesBwd = {'」': '「', '』': '『', "'": "'", '"': '"'}; const terminators = '…。..??!!'; @@ -182,8 +182,8 @@ function docSentenceExtract(source, extent) { quoteStack = []; - let endPos = content.length; - for (let i = position; i < endPos; ++i) { + let endPos = content.length - 1; + for (let i = position; i <= endPos; ++i) { const c = content[i]; if (quoteStack.length === 0) { @@ -204,5 +204,15 @@ function docSentenceExtract(source, extent) { } } - return content.substring(startPos, endPos).trim(); + const sentence = content.substring(startPos, endPos); + const clozePrefix = sentence.substring(0, position - startPos); + const clozeBody = source.text(); + const clozeSuffix = sentence.substring(position - startPos + clozeBody.length); + + return { + sentence: sentence.trim(), + prefix: clozePrefix.trim(), + body: clozeBody.trim(), + sufix: clozeSuffix.trim() + }; } |