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