Text selection: cleanup text obtained from engines (#6410)

reviewable/pr6370/r3
poire-z 4 years ago committed by GitHub
parent da507f8607
commit 6e7c7bb841
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -200,6 +200,18 @@ local function inside_box(pos, box)
end
end
local function cleanupSelectedText(text)
-- Trim spaces and new lines at start and end
text = text:gsub("^[\n%s]*", "")
text = text:gsub("[\n%s]*$", "")
-- Trim spaces around newlines
text = text:gsub("%s*\n%s*", "\n")
-- Trim consecutive spaces (that would probably have collapsed
-- in rendered CreDocuments)
text = text:gsub("%s%s+", " ")
return text
end
function ReaderHighlight:onTapPageSavedHighlight(ges)
local pages = self.view:getCurrentPageList()
local pos = self.view:screenToPageTransform(ges.pos)
@ -324,7 +336,7 @@ function ReaderHighlight:updateHighlight(page, index, side, direction, move_by_c
local new_end = self.view.highlight.saved[page][index].pos1
local new_text = self.ui.document:getTextFromXPointers(new_beginning, new_end)
local new_chapter = self.ui.toc:getTocTitleByPage(new_beginning)
self.view.highlight.saved[page][index].text = new_text
self.view.highlight.saved[page][index].text = cleanupSelectedText(new_text)
self.view.highlight.saved[page][index].chapter = new_chapter
local new_highlight = self.view.highlight.saved[page][index]
self.ui.bookmark:updateBookmark({
@ -468,7 +480,7 @@ function ReaderHighlight:onShowHighlightMenu()
text = C_("Text", "Copy"),
enabled = Device:hasClipboard(),
callback = function()
Device.input.setClipboardText(self.selected_text.text)
Device.input.setClipboardText(cleanupSelectedText(self.selected_text.text))
end,
},
{
@ -537,7 +549,7 @@ function ReaderHighlight:onShowHighlightMenu()
{
text = _("Share text"),
callback = function()
local text = self.selected_text.text
local text = cleanupSelectedText(self.selected_text.text)
-- call self:onClose() before calling the android framework
self:onClose()
Device.doShareText(text)
@ -1068,7 +1080,7 @@ function ReaderHighlight:onUnhighlight(bookmark_item)
datetime = bookmark_item.datetime
else -- called from DictQuickLookup Unhighlight button
page = self.hold_pos.page
sel_text = self.selected_text.text
sel_text = cleanupSelectedText(self.selected_text.text)
sel_pos0 = self.selected_text.pos0
end
if self.ui.document.info.has_pages then -- We can safely use page
@ -1131,7 +1143,7 @@ function ReaderHighlight:getHighlightBookmarkItem()
pos0 = self.selected_text.pos0,
pos1 = self.selected_text.pos1,
datetime = datetime,
notes = self.selected_text.text,
notes = cleanupSelectedText(self.selected_text.text),
highlighted = true,
chapter = chapter_name,
}
@ -1153,7 +1165,7 @@ function ReaderHighlight:saveHighlight()
local chapter_name = self.ui.toc:getTocTitleByPage(pg_or_xp)
local hl_item = {
datetime = datetime,
text = self.selected_text.text,
text = cleanupSelectedText(self.selected_text.text),
pos0 = self.selected_text.pos0,
pos1 = self.selected_text.pos1,
pboxes = self.selected_text.pboxes,
@ -1225,7 +1237,7 @@ end
function ReaderHighlight:lookupWikipedia()
if self.selected_text then
self.ui:handleEvent(Event:new("LookupWikipedia", self.selected_text.text))
self.ui:handleEvent(Event:new("LookupWikipedia", cleanupSelectedText(self.selected_text.text)))
end
end
@ -1233,7 +1245,7 @@ function ReaderHighlight:onHighlightSearch()
logger.dbg("search highlight")
self:highlightFromHoldPos()
if self.selected_text then
local text = util.stripPunctuation(self.selected_text.text)
local text = util.stripPunctuation(cleanupSelectedText(self.selected_text.text))
self.ui:handleEvent(Event:new("ShowSearchDialog", text))
end
end
@ -1242,7 +1254,7 @@ function ReaderHighlight:onHighlightDictLookup()
logger.dbg("dictionary lookup highlight")
self:highlightFromHoldPos()
if self.selected_text then
self.ui:handleEvent(Event:new("LookupWord", self.selected_text.text))
self.ui:handleEvent(Event:new("LookupWord", cleanupSelectedText(self.selected_text.text)))
end
end

Loading…
Cancel
Save