0);
article->write_footer(ofs);
if (!article->is_hidden())
if (article->is_hidden()) continue;
index.add(article->get_categories());
for (const auto& category : article->get_categories())
{
categories.merge(article->get_categories());
for (const auto& category : article->get_categories())
category_map[category].emplace_back(article);
auto [it, _] = category_map.emplace(category, args.options);
it->second.add(article);
}
}
if (!args.index) return 0;
indexer.sort();
index.sort();
std::ofstream rss(args.output_dir / "rss.xml");
indexer.create_rss(rss, "index");
std::ofstream ofs_rss(args.output_dir / "rss.xml");
index.create_rss(ofs_rss, "index");
std::ofstream atom(args.output_dir / "atom.xml");
indexer.create_atom(atom, "index");
std::ofstream ofs_atom(args.output_dir / "atom.xml");
index.create_atom(ofs_atom, "index");
std::ofstream index(args.output_dir / "index.html");
indexer.create_index(index, "blog", categories);
std::ofstream ofs_index(args.output_dir / "index.html");
index.create_index(ofs_index, "blog");
for (const auto& [category, articles] : category_map)
for (auto& [category_name, category_index] : category_map)
{
auto ctgry = category;
auto ctgry = category_name;
std::ofstream ost(args.output_dir / (normalize(ctgry) + ".html"));
indexer.create_index(ost, category, {});
category_index.sort();
category_index.create_index(ost, category_name);
}
std::ofstream robots(args.output_dir / "robots.txt");
indexer.create_robots(robots);
std::ofstream ofs_robots(args.output_dir / "robots.txt");
index.create_robots(ofs_robots);
std::ofstream sitemap(args.output_dir / "sitemap.xml");
indexer.create_sitemap(sitemap);
std::ofstream ofs_sitemap(args.output_dir / "sitemap.xml");
index.create_sitemap(ofs_sitemap);
return 0;
}