blob: ef34382b8fafd2370507fa3edea24accc95a57cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
local utils = require("inbox.utils")
local M = {
_renderers = setmetatable({}, {
__index = function(_, k)
if k == "headers" then
return require("inbox.renderers.headers")
else
return require("inbox.renderers.nvim")
end
end,
}),
}
---@param content_type inbox.ContentType
---@return inbox.Renderer
function M.get_renderer(content_type)
return M._renderers[content_type]
end
---@param opts inbox.Config
function M.setup(opts)
if opts.renderers == nil then
return
end
for content_type, renderer in pairs(opts.renderers) do
if type(renderer) == "string" then
local is_ok, result = pcall(require, string.format("inbox.renderers.%s", renderer))
if is_ok then
renderer = result
else
utils.error("Renderer not found", { renderer = renderer })
end
end
if
type(renderer.available) == "nil"
or (type(renderer.available) == "function" and renderer.available())
or (type(renderer.available) == "boolean" and renderer.available)
then
M._renderers[content_type] = renderer
end
end
end
return M
|