Files
cave.nvim/lua/cave/template_provider.lua
2024-10-02 14:58:20 +02:00

24 lines
823 B
Lua

local Meta = require "cave.meta"
local ClassLogger = require "cave.log.class_logger"
---@class cave.TemplateProvider : overseer.TemplateProvider
---@field get_templates fun(): overseer.TemplateDefinition[]
local TemplateProvider = Meta.derive "TemplateProvider"
TemplateProvider.log = ClassLogger.new(TemplateProvider)
function TemplateProvider:init(name, get_templates_fn)
self.name = name
self.get_templates = get_templates_fn
---@type fun(opts: overseer.SearchParams, cb: fun(tmpls: overseer.TemplateDefinition[]))
self.generator = function(_, cb) cb(self.get_templates()) end
end
---@return cave.TemplateProvider
function TemplateProvider.new(name, get_templates_fn)
local provider = setmetatable({}, TemplateProvider)
provider:init(name, get_templates_fn)
return provider
end
return TemplateProvider