adds rss feed support to blog
This commit is contained in:
parent
6d627aa9b4
commit
d8253d3333
117 changed files with 5336 additions and 326 deletions
|
@ -1,32 +1,22 @@
|
|||
#include "BlogPageBuilder.h"
|
||||
|
||||
|
||||
BlogPageBuilder::BlogPageBuilder(std::string templateFileUrl, std::string inFolder,
|
||||
std::string outFolder, int flags, std::string articleIdentifier)
|
||||
BlogPageBuilder::BlogPageBuilder(std::string templateFileUrl, std::vector<Page*> pages, std::string inFolderUrl, int flags, std::string articleIdentifier)
|
||||
{
|
||||
options = flags;
|
||||
this->outFolder = outFolder;
|
||||
this->inFolder = inFolder;
|
||||
pageTemplate = readFile(templateFileUrl);
|
||||
this->articleIdentifier = articleIdentifier;
|
||||
navIdentifier = "<nav>";
|
||||
|
||||
parser = new BlogParser();
|
||||
|
||||
collectPages();
|
||||
|
||||
NavBarGenerator* navGen = new NavBarGenerator();
|
||||
navSection = navGen->generateNavSection(pages, inFolder, options);
|
||||
navSection = navGen->generateNavSection(pages, inFolderUrl, options);
|
||||
delete navGen;
|
||||
}
|
||||
|
||||
BlogPageBuilder::~BlogPageBuilder()
|
||||
{
|
||||
for(Page* page : pages)
|
||||
delete page;
|
||||
}
|
||||
|
||||
void BlogPageBuilder::createPage(Page* page)
|
||||
|
||||
std::string BlogPageBuilder::createPage(std::string articleHTML)
|
||||
{
|
||||
std::string buffer = pageTemplate;
|
||||
|
||||
|
@ -34,19 +24,9 @@ void BlogPageBuilder::createPage(Page* page)
|
|||
buffer.insert(navLocation, navSection);
|
||||
|
||||
int articleLocation = calculateIdentifierLocation(articleIdentifier, buffer);
|
||||
std::string articleText = parser->parse(page->getSourceFileContents());
|
||||
buffer.insert(articleLocation, articleText);
|
||||
buffer.insert(articleLocation, articleHTML);
|
||||
|
||||
page->setOutFileContents(buffer);
|
||||
}
|
||||
|
||||
void BlogPageBuilder::buildAllPages()
|
||||
{
|
||||
for(Page* page : pages)
|
||||
{
|
||||
createPage(page);
|
||||
page->writePageToFile();
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int BlogPageBuilder::calculateIdentifierLocation(std::string id, std::string text)
|
||||
|
@ -57,17 +37,27 @@ int BlogPageBuilder::calculateIdentifierLocation(std::string id, std::string tex
|
|||
return location;
|
||||
}
|
||||
|
||||
void BlogPageBuilder::collectPages()
|
||||
std::string BlogPageBuilder::readFile(std::string fileUrl)
|
||||
{
|
||||
auto directoryIterator = std::filesystem::recursive_directory_iterator(inFolder);
|
||||
for(auto file : directoryIterator)
|
||||
{
|
||||
if (file.is_directory())
|
||||
continue;
|
||||
pages.push_back(new Page(file.path(), outFolder));
|
||||
}
|
||||
std::ifstream file(fileUrl);
|
||||
std::stringstream fileCache;
|
||||
fileCache << file.rdbuf();
|
||||
|
||||
return fileCache.str();
|
||||
}
|
||||
|
||||
bool BlogPageBuilder::isOptionEnabled(int flag)
|
||||
{
|
||||
return (options & flag) == flag;
|
||||
}
|
||||
|
||||
bool NavBarGenerator::isOptionEnabled(int flag)
|
||||
{
|
||||
return (options & flag) == flag;
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::string NavBarGenerator::generateCategories(std::string rootFolderUrl)
|
||||
{
|
||||
std::stringstream buffer;
|
||||
|
@ -138,22 +128,3 @@ std::string NavBarGenerator::generateNavSection(std::vector<Page*> pages, std::s
|
|||
buffer = insertPagesIntoCategories(buffer, pages);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
std::string BlogPageBuilder::readFile(std::string fileUrl)
|
||||
{
|
||||
std::ifstream file(fileUrl);
|
||||
std::stringstream fileCache;
|
||||
fileCache << file.rdbuf();
|
||||
|
||||
return fileCache.str();
|
||||
}
|
||||
|
||||
bool BlogPageBuilder::isOptionEnabled(int flag)
|
||||
{
|
||||
return (options & flag) == flag;
|
||||
}
|
||||
|
||||
bool NavBarGenerator::isOptionEnabled(int flag)
|
||||
{
|
||||
return (options & flag) == flag;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue