FIX: InlineUploads should replace attachment links with markdown text.

This commit is contained in:
Guo Xiang Tan 2019-06-19 11:14:46 +08:00
parent 73a45048a0
commit 34f382b758
2 changed files with 21 additions and 1 deletions

View File

@ -24,7 +24,9 @@ class InlineUploads
cooked_fragment.traverse do |node|
if node.name == "img"
# Do nothing
elsif !(node.children.count == 1 && (node.children[0].name != "img" && node.children[0].children.blank?))
elsif !(node.children.count == 1 && (node.children[0].name != "img" && node.children[0].children.blank?)) &&
!(node.name == "a" && node.children.count > 1 && !node_children_names(node).include?("img"))
next
end
@ -293,4 +295,18 @@ class InlineUploads
matches
end
private_class_method :matched_uploads
def self.node_children_names(node, names = Set.new)
if node.children.blank?
names << node.name
return names
end
node.children.each do |child|
names = node_children_names(child, names)
end
names
end
private_class_method :node_children_names
end

View File

@ -452,6 +452,8 @@ RSpec.describe InlineUploads do
<a class="test attachment" href="#{upload.url}">test3</a>
<a class="test attachment" href="#{upload2.url}">test3</a><a class="test attachment" href="#{upload3.url}">test3</a>
<a class="test attachment" href="#{upload3.url}">This is some _test_ here</a>
MD
expect(InlineUploads.process(md)).to eq(<<~MD)
@ -463,6 +465,8 @@ RSpec.describe InlineUploads do
[test3|attachment](#{upload.short_url})
[test3|attachment](#{upload2.short_url})[test3|attachment](#{upload3.short_url})
[This is some _test_ here|attachment](#{upload3.short_url})
MD
end