24 lines
823 B
Lua
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
|