Generate blog catalog file

WebsiteBuilder now generates blog catalog files, containing a catalog of
articles for each blog.
This commit is contained in:
luca0N! 2022-04-27 19:27:18 -03:00
parent 304ed3013f
commit e2aa7f4ce8
Signed by: luca0N
GPG Key ID: 2E7B4655CF16D7D6
2 changed files with 16 additions and 7 deletions

View File

@ -104,7 +104,6 @@ namespace Article {
bool reading_article_metadata = false; bool reading_article_metadata = false;
for (std::string const &line : cfg_lines) { for (std::string const &line : cfg_lines) {
std::cout << "[!] Line: " << line << "\n";
// Check namespace // Check namespace
if (reading_article_metadata) { if (reading_article_metadata) {
std::string k_title = "Title=", std::string k_title = "Title=",

View File

@ -189,7 +189,7 @@ void build_blog_structure(std::string const &path, std::string const &prefix, st
// Sort am list. // Sort am list.
am.sort(Article::Comparator::comp); am.sort(Article::Comparator::comp);
// Generate blog catalog. // Generate blog catalog.
std::string blog_html_catalog = "<ul>", std::string blog_html_catalog = "<ul>\n",
last_date = ""; last_date = "";
std::string hr_month[] = { std::string hr_month[] = {
"January", "January",
@ -215,20 +215,30 @@ void build_blog_structure(std::string const &path, std::string const &prefix, st
// the last article. If it doesn't, add a new group to the catalog. // the last article. If it doesn't, add a new group to the catalog.
if (hr_date != last_date) { if (hr_date != last_date) {
last_date = hr_date; last_date = hr_date;
blog_html_catalog += "<span><b>"; blog_html_catalog += "\n\t<span><b>";
blog_html_catalog += hr_date; blog_html_catalog += hr_date;
blog_html_catalog += "</b></span>"; blog_html_catalog += "</b></span>\n";
} }
blog_html_catalog += "\t<li><a href=\"./";
blog_html_catalog += "<li><a href=\"./";
blog_html_catalog += m->path; blog_html_catalog += m->path;
blog_html_catalog += "\">"; blog_html_catalog += "\">";
blog_html_catalog += m->title; blog_html_catalog += m->title;
blog_html_catalog += "</a></li>"; blog_html_catalog += "</a></li>\n";
// Free memory as it's no longer needed. // Free memory as it's no longer needed.
free(m); free(m);
} }
blog_html_catalog += "</ul>"; blog_html_catalog += "</ul>";
// Put catalog HTML into template and save it to the blog directory.
std::filesystem::path catalog_output_path = obp;
catalog_output_path /= "index.html";
std::string html_template = get_template(path);
std::regex content_placeholder("<!--\\[_SWG: \\$CONTENT\\]-->");
std::string catalog_html_contents = std::regex_replace(html_template, content_placeholder, blog_html_catalog);
FILE *catalog_output_file = fopen(catalog_output_path.c_str(), "w");
fputs(catalog_html_contents.c_str(), catalog_output_file);
fclose(catalog_output_file);
} }
/** /**