#pragma once #include "Directory.h" #include "ContentFile.h" #include #include #include #include class GeneratorConfig { public: void setThemePath(const Path& path) { mThemesPath = path; } void setActiveTheme(const std::string& theme) { mActiveTheme = theme; } Path getThemePath() const { return mThemesPath; } std::string getActiveTheme() const { return mActiveTheme; } private: Path mThemesPath; std::string mActiveTheme; }; class TemplateFile { public: TemplateFile(const Path& path) : mPath(path) { } private: Path mPath; }; class WebsiteGenerator { public: void findProject(const std::string& searchPath); void readConfig(); void parseContentFiles(); void parseTemplateFiles(); void doSubstitutions(); void write(); private: void findContentFiles(); Path getContentPath() const; Path getPagesPath() const; Path getArticlesPath() const; Path getConfigPath() const; std::filesystem::path mProjectPath; GeneratorConfig mConfig; std::vector mPages; std::vector mArticles; std::unordered_map > mTemplateFiles; };