From 1cfa8c27dbdd1cd37ab6065c81804c9ea11efdb6 Mon Sep 17 00:00:00 2001
From: Fabio Manganiello <fabio@manganiello.tech>
Date: Sun, 4 Dec 2022 15:14:37 +0100
Subject: [PATCH] Pages rendered in the RSS feed route shouldn't include the
 HTML head boilerplate

---
 madblog/app.py                 | 15 ++++++++++++---
 madblog/routes.py              |  2 +-
 madblog/templates/article.html | 15 ++++++++++-----
 3 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/madblog/app.py b/madblog/app.py
index 525dea7..0ba746b 100644
--- a/madblog/app.py
+++ b/madblog/app.py
@@ -97,7 +97,13 @@ class BlogApp(Flask):
 
         return metadata
 
-    def get_page(self, page: str, title: Optional[str] = None, skip_header: bool = False):
+    def get_page(
+        self,
+        page: str,
+        title: Optional[str] = None,
+        skip_header: bool = False,
+        skip_html_head: bool = False
+    ):
         if not page.endswith('.md'):
             page = page + '.md'
 
@@ -127,13 +133,15 @@ class BlogApp(Flask):
                     else None
                 ),
                 content=markdown(f.read(), extensions=['fenced_code', 'codehilite', MarkdownLatex()]),
-                skip_header=skip_header
+                skip_header=skip_header,
+                skip_html_head=skip_html_head,
             )
 
     def get_pages(
         self,
         with_content: bool = False,
         skip_header: bool = False,
+        skip_html_head: bool = False,
         sorter: Type[PagesSorter] = PagesSortByTime,
         reverse: bool = True,
     ) -> List[Tuple[int, dict]]:
@@ -145,7 +153,8 @@ class BlogApp(Flask):
                 'content': (
                     self.get_page(
                         os.path.join(root, f),
-                        skip_header=skip_header
+                        skip_header=skip_header,
+                        skip_html_head=skip_html_head,
                     )
                     if with_content else ''
                 ),
diff --git a/madblog/routes.py b/madblog/routes.py
index 55b6cf1..433ca1b 100644
--- a/madblog/routes.py
+++ b/madblog/routes.py
@@ -75,7 +75,7 @@ def article_route(article: str):
 
 @app.route('/rss', methods=['GET'])
 def rss_route():
-    pages = app.get_pages(with_content=True, skip_header=True)
+    pages = app.get_pages(with_content=True, skip_header=True, skip_html_head=True)
     short_description = 'short' in request.args
 
     return Response('''<?xml version="1.0" encoding="UTF-8" ?>
diff --git a/madblog/templates/article.html b/madblog/templates/article.html
index a48d40b..cc62722 100644
--- a/madblog/templates/article.html
+++ b/madblog/templates/article.html
@@ -1,8 +1,11 @@
-{% with title=title, skip_header=skip_header or not config.header, styles=['/css/blog.css', '/css/code.css'] %}
-    {% include 'common-head.html' %}
-{% endwith %}
+{% if not skip_html_head %}
+  {% with title=title, skip_header=skip_header or not config.header, styles=['/css/blog.css', '/css/code.css'] %}
+      {% include 'common-head.html' %}
+  {% endwith %}
 
 <main>
+{% endif %}
+
     <div class="container">
         {% if not skip_header %}
             {% if title %}
@@ -48,6 +51,8 @@
     </div>
 
     {% include 'footer.html' %}
-</main>
 
-{% include 'common-tail.html' %}
+{% if not skip_html_head %}
+</main>
+  {% include 'common-tail.html' %}
+{% endif %}