stamdStatic Markdown Page Generator |
git clone git://git.dimitrijedobrota.com/stamd.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
commit | a9307c02b44429cbec421ee24141b7427bc10b1c |
parent | 3390e3be634ba5943cef85e6d83eb81764b4e942 |
author | Dimitrije Dobrota < mail@dimitrijedobrota.com > |
date | Sat, 3 May 2025 09:47:01 +0200 |
Utilize common tag shorthands
M | source/article.cpp | | | ++++++++++++++++++++ -------------------------------------------------------------- |
M | source/indexer.cpp | | | ++++ -------------- |
2 files changed, 24 insertions(+), 80 deletions(-)
diff --git a/ source/article.cpp b/ source/article.cpp
@@ -110,8 +110,8 @@
hemplate::element Article::print_categories(const categories_t& categories)
{
auto ctgry = category;
normalize(ctgry);
return a {
{{"href", std::format("./{}.html", ctgry)}},
return aHref {
std::format("./{}.html", ctgry),
category,
};
}
@@ -125,76 +125,30 @@
hemplate::element Article::write(const content_t& content) const
using namespace hemplate::html; // NOLINT
return element {
doctype {},
doctype {},
html {
{{"lang", get_language()}},
head {
title {get_title()},
},
// Meta tags
meta {
{{"charset", "UTF-8"}},
},
meta {
{{"name", "author"}, {"content", get_author()}},
},
meta {{
{"name", "description"},
{"content", get_desciprtion()},
}},
meta {{
{"name", "keywords"},
{"content", get_keywords()},
}},
meta {
{{"content", "width=device-width, initial-scale=1"},
{"name", "viewport"}}
},
metaUTF8 {},
metaName {"author", get_author()},
metaName {"description", get_desciprtion()},
metaName {"keywords", get_keywords()},
metaName {"viewport", "width=device-width, initial-scale=1"},
// Stylesheets
link {{
{"rel", "stylesheet"},
{"type", "text/css"},
{"href", "/css/index.css"},
}},
link {{
{"rel", "stylesheet"},
{"type", "text/css"},
{"href", "/css/colors.css"},
}},
// Rss feed
link {{
{"rel", "alternate"},
{"type", "application/atom+xml"},
{"title", "RSS feed"},
{"href", "/blog/rss.xml"},
}},
// Atom feed
link {{
{"rel", "alternate"},
{"type", "application/atom+xml"},
{"title", "Atom feed"},
{"href", "/blog/atom.xml"},
}},
// Icons
link {{
{"rel", "icon"},
{"type", "image/png"},
{"sizes", "32x32"},
{"href", "/img/favicon-32x32.png"},
}},
link {{
{"rel", "icon"},
{"type", "image/png"},
{"sizes", "16x16"},
{"href", "/img/favicon-16x16.png"},
}},
linkStylesheet {"/css/index.css"},
linkStylesheet {"/css/colors.css"},
element {
linkRss {"RSS feed", "/blog/rss.xml"},
linkAtom {"Atom feed", "/blog/atom.xml"},
},
// Icons
linkIcon {"32x32", "/img/favicon-32x32.png"},
linkIcon {"16x16", "/img/favicon-16x16.png"},
},
body {
input {{
{"type", "checkbox"},
diff --git a/ source/indexer.cpp b/ source/indexer.cpp
@@ -77,10 +77,7 @@
void Indexer::create_index(std::ostream& ost, const std::string& doc_title)
return li {
span {article->get_date(), " - "},
a {
{{"href", article->get_filename()}},
article->get_title(),
},
aHref {article->get_filename(), article->get_title()},
};
}
),
@@ -105,15 +102,8 @@
void Indexer::create_atom(std::ostream& ost, const std::string& doc_title) const
id {base_url},
updated {format_time_now()},
author {name {author_name}},
link {{
{"href", base_url + "/atom.xml"},
{"rel", "self"},
}},
link {{
{"href", base_url + "blog/atom.xml"},
{"rel", "alternate"},
{"type", "text/html"},
}},
linkSelf {base_url + "/atom.xml"},
linkAlternate {base_url + "blog/atom.xml"},
feed {
transform(
m_articles,
@@ -128,7 +118,7 @@
void Indexer::create_atom(std::ostream& ost, const std::string& doc_title) const
return entry {
title {art_title},
id {base_url + filename},
link {{{"href", base_url + filename}}},
linkHref {base_url + filename},
updated {format_time(parse_time((date)))},
summary {art_summary},
};