|
|
|
local util = require("ffi/util")
|
|
|
|
local T = util.template
|
|
|
|
local _ = require("gettext")
|
|
|
|
|
|
|
|
-- myClippings exporter
|
|
|
|
local ClippingsExporter = require("base"):new {
|
|
|
|
name = "myClippings",
|
|
|
|
extension = "txt",
|
|
|
|
mimetype = "text/plain",
|
|
|
|
all_books_title = "myClippings"
|
|
|
|
}
|
|
|
|
|
|
|
|
local function format(booknotes)
|
|
|
|
local tbl = {}
|
|
|
|
|
|
|
|
for ___, entry in ipairs(booknotes) do
|
|
|
|
for ____, clipping in ipairs(entry) do
|
|
|
|
if booknotes.title and clipping.text then
|
|
|
|
local title_str = booknotes.title .. " (" .. (booknotes.author or "Unknown") .. ")"
|
|
|
|
table.insert(tbl, title_str)
|
|
|
|
local header = T(_("- Your highlight on page %1 | Added on %2"), clipping.page,
|
|
|
|
os.date("%A, %B %d, %Y %I:%M:%S %p", clipping.time))
|
|
|
|
table.insert(tbl, header)
|
|
|
|
table.insert(tbl, "")
|
|
|
|
table.insert(tbl, clipping.text)
|
|
|
|
table.insert(tbl, "==========")
|
|
|
|
|
|
|
|
if clipping.note then
|
|
|
|
table.insert(tbl, title_str)
|
|
|
|
header = T(_("- Your note on page %1 | Added on %2"), clipping.page,
|
|
|
|
os.date("%A, %B %d, %Y %I:%M:%S %p", clipping.time))
|
|
|
|
table.insert(tbl, header)
|
|
|
|
|
|
|
|
table.insert(tbl, "")
|
|
|
|
table.insert(tbl, clipping.note)
|
|
|
|
table.insert(tbl, "==========")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Ensure a newline after the last "=========="
|
|
|
|
table.insert(tbl, "")
|
|
|
|
return table.concat(tbl, "\n")
|
|
|
|
end
|
|
|
|
|
|
|
|
function ClippingsExporter:export(t)
|
|
|
|
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)
|
|
|
|
end
|
|
|
|
file:close()
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
function ClippingsExporter:share(t)
|
|
|
|
local content = format(t)
|
|
|
|
self:shareText(content)
|
|
|
|
end
|
|
|
|
|
|
|
|
return ClippingsExporter
|