Blog/Src/Program.cpp

51 lines
1.4 KiB
C++

#include "Program.h"
void Program::collectPages()
{
auto directoryIterator = std::filesystem::recursive_directory_iterator(inFolderUrl);
for(auto file : directoryIterator)
{
if (file.is_directory())
continue;
pages.push_back(new Page(file.path(), outFolderUrl));
}
}
Program::Program(std::string inFolderUrl, std::string outFolderUrl, std::string pageTemplate, std::string atomTemplate, std::string siteWebUrl, int flags)
{
this->inFolderUrl = inFolderUrl;
this->outFolderUrl = outFolderUrl;
this->siteWebUrl = siteWebUrl;
collectPages();
blogPageBuilder = new BlogPageBuilder(pageTemplate, pages, inFolderUrl, flags);
blogParser = new BlogParser();
atomBuilder = new AtomBuilder(atomTemplate);
}
Program::~Program()
{
for(Page* page : pages)
delete page;
}
void Program::buildAll()
{
for(Page* page : pages)
{
std::string articleHTML = blogParser->parse(page->getSourceFileContents());
page->setOutFileContents(blogPageBuilder->createPage(articleHTML));
page->writePageToFile();
if (!page->getPageFlags().alwaysHidden)
atomBuilder->addHTMLEntry(articleHTML,
page->getPageTitle(),
siteWebUrl + page->getRelativeOutUrl(),
page->getLastTimeEdited());
}
atomBuilder->writeToFile(outFolderUrl);
}