#pragma once #include "String.h" #include #include #include Map.h #include "Vector.h" using Path = std::filesystem::path; class SiteGeneratorConfig; class ContentPage; class ContentArticle; class TemplatingEngine; class WebsiteGenerator { public: WebsiteGenerator(); ~WebsiteGenerator(); void doSubstitutions(); void findProject(const 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; Ptr mConfig; Ptr mTemplateEngine; Vector > mPages; Vector > mArticles; };