#ifndef TEMPLATE_H #define TEMPLATE_H #include #include #include "config.h" #include "templatepage.h" #include "utils.h" #include "response.h" #include "searchresult.h" #include "revision.h" class Template { private: ConfigVariableResolver *configVarResolver; ConfigUrls *configUrls; std::string templateprefix; std::string templatepath; std::map pagesMap; std::string resolveIncludes(std::string_view content); std::string getPartPath(std::string_view partname); std::string loadResolvedPart(std::string_view partname); std::string loadPartContent(std::string_view partname); TemplatePage createPage(std::string name); public: Template(std::string templateprefix, std::string templatepath, ConfigUrls &configUrls, ConfigVariableResolver &configVarsResolver); /* TODO: returning this as a reference is by no means a risk free business, because between requests, different vars can be set conditionally, thus creating a mess */ TemplatePage &getPage(const std::string &pagename) ; std::string renderSearch(const std::vector &results, std::function callback) const; std::string renderSearch(const std::vector &results) const; std::string renderSearch(const std::vector &results) const; std::string renderRevisionList(const std::vector &revisions, bool withpage=false) const; }; #endif // TEMPLATE_H