#pragma once #include #include #include #include #include using Path = std::filesystem::path; class SiteGeneratorConfig; class ContentPage; class ContentArticle; class TemplatingEngine; class WebsiteGenerator { public: WebsiteGenerator(); ~WebsiteGenerator(); void doSubstitutions(); void findProject(const std::string& searchPath); void parseContentFiles(); void parseTemplateFiles(); void readConfig(); void write(); private: void findContentFiles(); Path getContentPath() const; Path getPagesPath() const; Path getArticlesPath() const; Path getConfigPath() const; Path getOutputPath() const; std::filesystem::path mProjectPath; std::unique_ptr mConfig; std::unique_ptr mTemplateEngine; std::vector > mPages; std::vector > mArticles; };