diff --git a/Resources/Output/Aardvark.html b/Resources/Output/Aardvark.html index 20dabfe..8feb0ed 100644 --- a/Resources/Output/Aardvark.html +++ b/Resources/Output/Aardvark.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/CatTowerDefence.html b/Resources/Output/CatTowerDefence.html index 69bcb3e..c4a9dcc 100644 --- a/Resources/Output/CatTowerDefence.html +++ b/Resources/Output/CatTowerDefence.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/EPQProject.html b/Resources/Output/EPQProject.html index d1f7d46..f82f91c 100644 --- a/Resources/Output/EPQProject.html +++ b/Resources/Output/EPQProject.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/MindMap.html b/Resources/Output/MindMap.html index 2903d51..fa62f0d 100644 --- a/Resources/Output/MindMap.html +++ b/Resources/Output/MindMap.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/SBSWork.html b/Resources/Output/SBSWork.html index 064457d..3856204 100644 --- a/Resources/Output/SBSWork.html +++ b/Resources/Output/SBSWork.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/TestFullArticle.html b/Resources/Output/TestFullArticle.html index 975a76e..76aa107 100644 --- a/Resources/Output/TestFullArticle.html +++ b/Resources/Output/TestFullArticle.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Output/Wireframe.css b/Resources/Output/Wireframe.css index e4f0ca1..1f3a31b 100644 --- a/Resources/Output/Wireframe.css +++ b/Resources/Output/Wireframe.css @@ -17,11 +17,12 @@ nav{ } nav h1{ - font-size: 1.2rem; + font-size: 1.3rem; } nav h2{ font-size: 1rem; + margin-bottom: 0; } article{ diff --git a/Resources/Output/index.html b/Resources/Output/index.html index e86beaf..73a2b63 100644 --- a/Resources/Output/index.html +++ b/Resources/Output/index.html @@ -16,6 +16,10 @@
  • Example Post
  • Welcome!
  • +

    Newer Work

    +
  • This Site
  • + +

    Older Work

  • Mind Map Maker
  • AardvarkXR
  • @@ -23,8 +27,7 @@
  • Tower defence game
  • -

    Newer Work

    -
  • This Site
  • +

    Thoughts And Essays

    University

    diff --git a/Resources/Static/Wireframe.css b/Resources/Static/Wireframe.css index 5db2986..1f3a31b 100644 --- a/Resources/Static/Wireframe.css +++ b/Resources/Static/Wireframe.css @@ -17,11 +17,12 @@ nav{ } nav h1{ - font-size: 1rem; + font-size: 1.3rem; } nav h2{ font-size: 1rem; + margin-bottom: 0; } article{ diff --git a/Src/BlogPageBuilder.cpp b/Src/BlogPageBuilder.cpp index 01b041e..a083299 100644 --- a/Src/BlogPageBuilder.cpp +++ b/Src/BlogPageBuilder.cpp @@ -14,7 +14,10 @@ BlogPageBuilder::BlogPageBuilder(std::string templateFileUrl, std::string inFold parser = new BlogParser(); collectPages(); - navSection = generateNavSection(); + + NavBarGenerator* navGen = new NavBarGenerator(); + navSection = navGen->generateNavSection(pages, options); + delete navGen; } BlogPageBuilder::~BlogPageBuilder() @@ -65,9 +68,12 @@ void BlogPageBuilder::collectPages() } } -std::string BlogPageBuilder::generateCategories(std::string rootFolderUrl) +std::string NavBarGenerator::generateCategories(std::string rootFolderUrl) { std::stringstream buffer; + + std::set categories; + auto directoryIterator = std::filesystem::directory_iterator(rootFolderUrl); for (auto folder : directoryIterator) { @@ -76,16 +82,20 @@ std::string BlogPageBuilder::generateCategories(std::string rootFolderUrl) std::string path = folder.path(); std::string folderName = path.substr(path.find_last_of("/")+1, path.length()-path.find_last_of("/")); - buffer << "\n

    " << folderName << "

    \n"; - buffer << generateCategories(folder.path()); - buffer << "\n"; - + categories.insert(folderName); } } + + for (std::string category : categories) + { + buffer << "\n

    " << category << "

    \n"; + buffer << generateCategories(rootFolderUrl + "/" + category); + buffer << "\n"; + } return buffer.str(); } -std::string BlogPageBuilder::findDeepestCategory(std::string url) +std::string NavBarGenerator::findDeepestCategory(std::string url) { int categoryEnd = url.rfind("/"); int categoryStart = url.rfind("/", categoryEnd-1); @@ -94,7 +104,7 @@ std::string BlogPageBuilder::findDeepestCategory(std::string url) return url.substr(categoryStart, categoryEnd); } -std::string BlogPageBuilder::insertPagesIntoCategories(std::string categories) +std::string NavBarGenerator::insertPagesIntoCategories(std::string categories, std::vector pages) { for (Page* page : pages) { @@ -122,12 +132,13 @@ std::string BlogPageBuilder::insertPagesIntoCategories(std::string categories) return categories; } -std::string BlogPageBuilder::generateNavSection() +std::string NavBarGenerator::generateNavSection(std::vector pages, int options) { + this->options = options; std::string buffer; buffer.append(navHeader); buffer.append(generateCategories(SOURCE_FILE_FOLDER)); - buffer = insertPagesIntoCategories(buffer); + buffer = insertPagesIntoCategories(buffer, pages); return buffer; } @@ -144,3 +155,8 @@ bool BlogPageBuilder::isOptionEnabled(int flag) { return (options & flag) == flag; } + +bool NavBarGenerator::isOptionEnabled(int flag) +{ + return (options & flag) == flag; +} diff --git a/Src/BlogPageBuilder.h b/Src/BlogPageBuilder.h index 5aa2eed..4ed2e2c 100644 --- a/Src/BlogPageBuilder.h +++ b/Src/BlogPageBuilder.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "BlogParser.h" #include "Page.h" @@ -14,15 +15,30 @@ * along with an optional articleIdentifier. The template is searched for this * and the blog is placed after it. */ - -class BlogPageBuilder -{ -public: - enum OptionFlags +enum OptionFlags { NONE = 0X0, HIDE_PRIVATE = 0x1 }; + +class NavBarGenerator +{ +private: + std::string navHeader = "\n

    Navigation

    \n\n"; + int options; + + std::string generateCategories(std::string rootFolderUrl); + std::string insertPagesIntoCategories(std::string categories, std::vector pages); + std::string findDeepestCategory(std::string url); + + bool isOptionEnabled(int flag); + +public: + std::string generateNavSection(std::vector pages, int options); +}; + +class BlogPageBuilder +{ private: int options; @@ -42,14 +58,6 @@ private: int calculateIdentifierLocation(std::string id, std::string text); void collectPages(); - // TODO separate these into a separate object - std::string navHeader = "\n

    Navigation

    \n\n"; - - std::string generateNavSection(); - std::string generateCategories(std::string rootFolderUrl); - std::string insertPagesIntoCategories(std::string categories); - std::string findDeepestCategory(std::string url); - void createPage(Page* page); bool isOptionEnabled(int flag); diff --git a/Src/blog.cpp b/Src/blog.cpp index 20861cb..8b23845 100644 --- a/Src/blog.cpp +++ b/Src/blog.cpp @@ -65,9 +65,9 @@ int main(int argc, char* argv[]) std::string output = getArgValue(argc, argv, "-out="); if (output == "") output = OUTPUT_FILE_FOLDER; - int flags = BlogPageBuilder::OptionFlags::NONE; + int flags = OptionFlags::NONE; if (doesArgExist(argc, argv, "-hide")) - flags |= BlogPageBuilder::OptionFlags::HIDE_PRIVATE; + flags |= OptionFlags::HIDE_PRIVATE; // generated pages BlogPageBuilder* builder = new BlogPageBuilder(RESOURCE_FOLDER "/Templates/BlogPageTemplate.html", source, output, flags);