Files
koreader/frontend/document/documentregistry.lua

37 lines
1.0 KiB
Lua
Raw Normal View History

2013-10-18 22:38:07 +02:00
--[[
This is a registry for document providers
]]--
local DocumentRegistry = {
2014-03-13 21:52:43 +08:00
providers = { }
2013-10-18 22:38:07 +02:00
}
function DocumentRegistry:addProvider(extension, mimetype, provider)
2014-03-13 21:52:43 +08:00
table.insert(self.providers, { extension = extension, mimetype = mimetype, provider = provider })
2013-10-18 22:38:07 +02:00
end
function DocumentRegistry:getProvider(file)
2014-03-13 21:52:43 +08:00
-- TODO: some implementation based on mime types?
local extension = string.lower(string.match(file, ".+%.([^.]+)") or "")
for _, provider in ipairs(self.providers) do
if extension == provider.extension then
return provider.provider
end
end
2013-10-18 22:38:07 +02:00
end
function DocumentRegistry:openDocument(file)
local provider = self:getProvider(file)
if provider ~= nil then
return provider:new{file = file}
end
end
-- load implementations:
require("document/pdfdocument"):register(DocumentRegistry)
require("document/djvudocument"):register(DocumentRegistry)
require("document/credocument"):register(DocumentRegistry)
require("document/picdocument"):register(DocumentRegistry)
2013-10-18 22:38:07 +02:00
return DocumentRegistry