mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Refactored to use strictly locals
This commit is contained in:
35
frontend/document/documentregistry.lua
Normal file
35
frontend/document/documentregistry.lua
Normal file
@@ -0,0 +1,35 @@
|
||||
--[[
|
||||
This is a registry for document providers
|
||||
]]--
|
||||
local DocumentRegistry = {
|
||||
providers = { }
|
||||
}
|
||||
|
||||
function DocumentRegistry:addProvider(extension, mimetype, provider)
|
||||
table.insert(self.providers, { extension = extension, mimetype = mimetype, provider = provider })
|
||||
end
|
||||
|
||||
function DocumentRegistry:getProvider(file)
|
||||
-- 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
|
||||
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)
|
||||
|
||||
return DocumentRegistry
|
||||
Reference in New Issue
Block a user