From 9df814593d29b2edbf163719ca0b68027c351882 Mon Sep 17 00:00:00 2001 From: weijiuqiao <59040746+weijiuqiao@users.noreply.github.com> Date: Wed, 18 Dec 2024 21:13:37 +0800 Subject: [PATCH] VocabBuilder.koplugin: support PDF context extraction for multi-word phrase (#12917) Closes #12916. Closes #12475. --- frontend/document/koptinterface.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/frontend/document/koptinterface.lua b/frontend/document/koptinterface.lua index aab374709..41e2cfa04 100644 --- a/frontend/document/koptinterface.lua +++ b/frontend/document/koptinterface.lua @@ -1196,9 +1196,22 @@ function KoptInterface:getSelectedWordContext(word, nb_words, pos) local boxes = self.last_text_boxes if not pos or not boxes or #boxes == 0 then return end local i, j = getWordBoxIndices(boxes, pos) + local i_end, j_end = i, j + local word_array = util.splitToArray(word, " ") + for idx, split_word in ipairs(word_array) do + if boxes[i_end][j_end].word ~= split_word then return end + if idx ~= #word_array then + if j_end == #boxes[i_end] then + i_end = i_end + 1 + j_end = 1 + else + j_end = j_end + 1 + end + end + end if boxes[i][j].word ~= word then return end local prev_text = get_prev_text(boxes, i, j, nb_words) - local next_text = get_next_text(boxes, i, j, nb_words) + local next_text = get_next_text(boxes, i_end, j_end, nb_words) return prev_text, next_text end