FIX: Edge case with anchor tag in `InlineUploads`.

FIX: Edge case with anchor tag in InlineUploads.

diff --git a/app/services/inline_uploads.rb b/app/services/inline_uploads.rb
index 4ae95e8..6ac8ed5 100644
--- a/app/services/inline_uploads.rb
+++ b/app/services/inline_uploads.rb
@@ -228,7 +228,7 @@ class InlineUploads
 
         spaces_before =
           if after_html_tag && !match[0].end_with?("/>")
-            (match[3].present? ? match[3] : "  ")
+            (match[3].length > 0 ? match[3] : "  ")
           else
             ""
           end
diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb
index 17a1188..a1548fc 100644
--- a/spec/jobs/pull_hotlinked_images_spec.rb
+++ b/spec/jobs/pull_hotlinked_images_spec.rb
@@ -56,6 +56,26 @@ describe Jobs::PullHotlinkedImages do
       expect(post.reload.raw).to eq("![](#{Upload.last.short_url})")
     end
 
+    it 'replaces images in an anchor tag with weird indentation' do
+      post = Fabricate(:post, raw: <<~RAW)
+                                <a href="https://somelink.com">
+                                    <img alt="somelink" src="#{image_url}" />
+                                </a>
+      RAW
+
+      expect do
+        Jobs::PullHotlinkedImages.new.execute(post_id: post.id)
+      end.to change { Upload.count }.by(1)
+
+      expect(post.reload.raw).to eq(<<~RAW.chomp)
+                                <a href="https://somelink.com">
+
+                                    ![somelink](#{post.uploads.last.short_url})
+
+                                </a>
+      RAW
+    end
+
     it 'replaces images without protocol' do
       url = image_url.sub(/^https?\:/, '')
       post = Fabricate(:post, raw: "<img alt='test' src='#{url}'>")
diff --git a/spec/services/inline_uploads_spec.rb b/spec/services/inline_uploads_spec.rb
index ef7f48d..d54666f 100644
--- a/spec/services/inline_uploads_spec.rb
+++ b/spec/services/inline_uploads_spec.rb
@@ -309,6 +309,11 @@ RSpec.describe InlineUploads do
           <img src="#{upload.url}" alt="test" width="500" height="500">
         </a>
 
+        <h1></h1>
+                        <a href="http://somelink.com">
+                          <img src="#{upload2.url}" alt="test" width="500" height="500">
+                        </a>
+
         <p>
           <img src="#{upload2.url}" alt="test">
         </p>
@@ -337,6 +342,13 @@ RSpec.describe InlineUploads do
 
         </a>
 
+        <h1></h1>
+                        <a href="http://somelink.com">
+
+                          ![test|500x500](#{upload2.short_url})
+
+                        </a>
+
         <p>
 
           ![test](#{upload2.short_url})

GitHub sha: 9a25b0d6

1 Like

FIX: Don't replace img tags within anchor tags with markdown format.