From d14fd7858f45aa186a5e61ad9853eb71ffb9ea78 Mon Sep 17 00:00:00 2001 From: Alex Domingo Date: Tue, 11 Apr 2023 15:22:26 +0200 Subject: [PATCH] use fully qualified URLs for images in atom feed (#218) * use fully qualified URLs for images in atom feed * fix comment capitalization Co-authored-by: Nabil Freij --------- Co-authored-by: Nabil Freij --- src/ablog/blog.py | 21 +++++++++++++++++---- src/ablog/post.py | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/ablog/blog.py b/src/ablog/blog.py index 477abc32..d18c1f57 100644 --- a/src/ablog/blog.py +++ b/src/ablog/blog.py @@ -293,15 +293,25 @@ def page_url(self, pagename): return url -def html_builder_write_doc(self, docname, doctree): +def html_builder_write_doc(self, docname, doctree, img_url=False): """ Part of :meth:`sphinx.builders.html.StandaloneHTMLBuilder.write_doc` method used to convert *doctree* to HTML. + + Extra argument `img_url` enables conversion of `` source paths to + fully qualified URLs based on `blog_baseurl`. """ + # Source of images + img_folder = "_images" + if img_url and self.config["blog_baseurl"]: + img_src_path = urljoin(self.config["blog_baseurl"], img_folder) + else: + img_src_path = relative_uri(self.get_target_uri(docname), img_folder) + destination = StringOutput(encoding="utf-8") doctree.settings = self.docsettings self.secnumbers = {} - self.imgpath = relative_uri(self.get_target_uri(docname), "_images") + self.imgpath = img_src_path self.dlpath = relative_uri(self.get_target_uri(docname), "_downloads") self.current_docname = docname self.docwriter.write(doctree, destination) @@ -377,7 +387,7 @@ def __init__(self, blog, docname, info): def __lt__(self, other): return (self._computed_date, self.title) < (other._computed_date, other.title) - def to_html(self, pagename, fulltext=False, drop_h1=True): + def to_html(self, pagename, fulltext=False, drop_h1=True, img_url=False): """ Return excerpt or *fulltext* as HTML after resolving references with respect to *pagename*. @@ -385,6 +395,9 @@ def to_html(self, pagename, fulltext=False, drop_h1=True): By default, first `

` tag is dropped from the output. More than one can be dropped by setting *drop_h1* to the desired number of tags to be dropped. + + `img_url` enables conversion of `` source paths to fully + qualified URLs based on `blog_baseurl`. """ doctree = new_document("") @@ -404,7 +417,7 @@ def to_html(self, pagename, fulltext=False, drop_h1=True): revise_pending_xrefs(doctree, pagename) app.env.resolve_references(doctree, pagename, app.builder) add_permalinks, app.builder.add_permalinks = (app.builder.add_permalinks, False) - html = html_builder_write_doc(app.builder, pagename, doctree) + html = html_builder_write_doc(app.builder, pagename, doctree, img_url=img_url) app.builder.add_permalinks = add_permalinks if drop_h1: html = re.sub("

(.*?)

", "", html, count=abs(int(drop_h1))) diff --git a/src/ablog/post.py b/src/ablog/post.py index 28cd9e9e..7c077e6d 100644 --- a/src/ablog/post.py +++ b/src/ablog/post.py @@ -683,7 +683,7 @@ def generate_atom_feeds(app): if blog.blog_feed_titles: content = None else: - content = post.to_html(pagename, fulltext=feed_fulltext) + content = post.to_html(pagename, fulltext=feed_fulltext, img_url=True) feed_entry = feed.add_entry(order="append") feed_entry.id(post_url) feed_entry.link(href=post_url)