diff --git a/plugins/exporter.koplugin/target/markdown.lua b/plugins/exporter.koplugin/target/markdown.lua index d130a74ad..179c07c28 100644 --- a/plugins/exporter.koplugin/target/markdown.lua +++ b/plugins/exporter.koplugin/target/markdown.lua @@ -125,10 +125,8 @@ function MarkdownExporter:export(t) local file = io.open(path, "w") if not file then return false end for idx, book in ipairs(t) do - file:write(md.prepareBookContent(book, self.settings.formatting_options, self.settings.highlight_formatting)) - if idx < #t then - file:write("\n") - end + local tbl = md.prepareBookContent(book, self.settings.formatting_options, self.settings.highlight_formatting) + file:write(table.concat(tbl, "\n")) end file:write("\n\n_Generated at: " .. self:getTimeStamp() .. "_") file:close() @@ -136,8 +134,9 @@ function MarkdownExporter:export(t) end function MarkdownExporter:share(t) - local content = md.prepareBookContent(t, self.settings.formatting_options, self.settings.highlight_formatting) .. "\n\n_Generated at: " .. self:getTimeStamp() .. "_" - self:shareText(content) + local tbl = md.prepareBookContent(t, self.settings.formatting_options, self.settings.highlight_formatting) + table.insert(tbl, "\n_Generated at: " .. self:getTimeStamp() .. "_") + self:shareText(table.concat(tbl, "\n")) end return MarkdownExporter diff --git a/plugins/exporter.koplugin/target/text.lua b/plugins/exporter.koplugin/target/text.lua index dadc22849..ed227fe9e 100644 --- a/plugins/exporter.koplugin/target/text.lua +++ b/plugins/exporter.koplugin/target/text.lua @@ -10,43 +10,45 @@ local TextExporter = require("base"):new { } local function format(booknotes) + local tbl = {} + + -- Use wide_space to avoid crengine to treat it specially. local wide_space = "\227\128\128" - local content = "" + if booknotes.title then - content = content .. wide_space .. booknotes.title .. "\n" .. wide_space .. "\n" + table.insert(tbl, wide_space .. booknotes.title) + table.insert(tbl, wide_space) end for ___, entry in ipairs(booknotes) do for ____, clipping in ipairs(entry) do if clipping.chapter then - content = content .. wide_space .. clipping.chapter .. "\n" .. wide_space .. "\n" + table.insert(tbl, wide_space .. clipping.chapter) + table.insert(tbl, wide_space) end local text = T(_("-- Page: %1, added on %2\n"), clipping.page, os.date("%c", clipping.time)) - content = content .. wide_space .. wide_space .. text + table.insert(tbl, wide_space .. wide_space .. text) if clipping.text then - content = content .. clipping.text + table.insert(tbl, clipping.text) end if clipping.note then - content = content .. "\n---\n" .. clipping.note + table.insert(tbl, "\n---\n" .. clipping.note) end if clipping.image then - content = content .. _("") + table.insert(tbl, _("")) end - content = content .. "\n-=-=-=-=-=-\n" + table.insert(tbl, "-=-=-=-=-=-") end end - content = content .. "\n" - return content + return tbl end function TextExporter:export(t) - -- Use wide_space to avoid crengine to treat it specially. - local path = self:getFilePath(t) local file = io.open(path, "a") if not file then return false end for __, booknotes in ipairs(t) do - local content = format(booknotes) - file:write(content) + local tbl = format(booknotes) + file:write(table.concat(tbl, "\n")) end file:close() return true diff --git a/plugins/exporter.koplugin/template/md.lua b/plugins/exporter.koplugin/template/md.lua index 3b9644f0d..d013d411a 100644 --- a/plugins/exporter.koplugin/template/md.lua +++ b/plugins/exporter.koplugin/template/md.lua @@ -36,29 +36,28 @@ local formatters = { } local function prepareBookContent(book, formatting_options, highlight_formatting) - local content = "" + local tbl = {} local current_chapter = nil - content = content .. "# " .. book.title .. "\n" + table.insert(tbl, "# " .. book.title) local author = book.author or _("N/A") - content = content .. "##### " .. author:gsub("\n", ", ") .. "\n\n" + table.insert(tbl, "##### " .. author:gsub("\n", ", ") .. "\n") for _, note in ipairs(book) do local entry = note[1] if entry.chapter ~= current_chapter then current_chapter = entry.chapter - content = content .. "## " .. current_chapter .. "\n" + table.insert(tbl, "## " .. current_chapter) end - content = content .. "### Page " .. entry.page .. " @ " .. os.date("%d %B %Y %I:%M:%S %p", entry.time) .. "\n" + table.insert(tbl, "### Page " .. entry.page .. " @ " .. os.date("%d %B %Y %I:%M:%S %p", entry.time)) if highlight_formatting then - content = content .. string.format(formatters[formatting_options[entry.drawer]].formatter, entry.text) .."\n" + table.insert(tbl, string.format(formatters[formatting_options[entry.drawer]].formatter, entry.text)) else - content = content .. entry.text .. "\n" + table.insert(tbl, entry.text) end if entry.note then - content = content .. "\n---\n" .. entry.note .. "\n" + table.insert(tbl, "\n---\n" .. entry.note) end - content = content .. "\n" end - return content + return tbl end return {