From ff48fbdfda7719e010dd807e5edc91c224bd2ac3 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 12 Jun 2019 10:31:00 +0800 Subject: [PATCH] FIX: `InlineUploads` raises an error when img tag is invalid. --- app/services/inline_uploads.rb | 4 ++-- spec/services/inline_uploads_spec.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/services/inline_uploads.rb b/app/services/inline_uploads.rb index 70cbbf96208..42f410d1c65 100644 --- a/app/services/inline_uploads.rb +++ b/app/services/inline_uploads.rb @@ -195,9 +195,9 @@ class InlineUploads def self.match_img(markdown, external_src: false) markdown.scan(/(<(?!img)[^<>]+\/?>)?(\n*)(([ ]*)]+)>([ ]*))(\n*)/) do |match| node = Nokogiri::HTML::fragment(match[2].strip).children[0] - src = node.attributes["src"].value + src = node.attributes["src"]&.value - if matched_uploads(src).present? || external_src + if src && (matched_uploads(src).present? || external_src) text = node.attributes["alt"]&.value width = node.attributes["width"]&.value height = node.attributes["height"]&.value diff --git a/spec/services/inline_uploads_spec.rb b/spec/services/inline_uploads_spec.rb index 0ec00d0753c..4eb14959ce9 100644 --- a/spec/services/inline_uploads_spec.rb +++ b/spec/services/inline_uploads_spec.rb @@ -45,6 +45,20 @@ RSpec.describe InlineUploads do expect(InlineUploads.process(md)).to eq(md) end + it "should work with invalid img tags" do + md = <<~MD + + + This is an invalid `` tag + MD + + expect(InlineUploads.process(md)).to eq(<<~MD) + ![](#{upload.short_url}) + + This is an invalid `` tag + MD + end + it "should not correct code blocks" do md = "`In Code Block`"