Add support for indented link references on excerpt

Excerpt link reference extraction is missing all the indented references
at the bottom of the page. Markdown specify that those can be indented up
to three spaces.
This commit is contained in:
Eloy Espinaco 2016-08-08 11:28:53 -03:00
parent 4bff65be90
commit 9b09d8a8e8
4 changed files with 44 additions and 2 deletions

View File

@ -118,7 +118,7 @@ module Jekyll
if tail.empty? if tail.empty?
head head
else else
"" << head << "\n\n" << tail.scan(%r!^\[[^\]]+\]:.+$!).join("\n") "" << head << "\n\n" << tail.scan(%r!^ {0,3}\[[^\]]+\]:.+$!).join("\n")
end end
end end
end end

View File

@ -0,0 +1,16 @@
---
---
This is the first paragraph. It [has][link_0] [lots][link_1] [of][link_2]
[links][link_3].
This is the second paragraph. It has sample code that should not be extracted:
[fakelink]: www.invalid.com
And here are the real links:
[link_0]: www.example.com/0
[link_1]: www.example.com/1
[link_2]: www.example.com/2
[link_3]: www.example.com/3

View File

@ -119,6 +119,32 @@ class TestExcerpt < JekyllUnitTest
assert @extracted_excerpt.content.include?("http://www.jekyllrb.com/") assert @extracted_excerpt.content.include?("http://www.jekyllrb.com/")
end end
end end
context "with indented link references" do
setup do
@post = setup_post("2016-08-16-indented-link-references.markdown")
@excerpt = @post.excerpt
end
should "contain all refs at the bottom of the page" do
(0..3).each do |i|
assert_match "[link_#{i}]: www.example.com/#{i}", @excerpt.content
end
end
should "ignore indented code" do
refute_match "[fakelink]:", @excerpt.content
end
should "render links properly" do
@rendered_post = @post.dup
do_render(@rendered_post)
output = @rendered_post.data["excerpt"].output
(0..3).each do |i|
assert_includes output, "<a href=\"www.example.com/#{i}\">"
end
end
end
end end
end end

View File

@ -11,7 +11,7 @@ class TestGeneratedSite < JekyllUnitTest
end end
should "ensure post count is as expected" do should "ensure post count is as expected" do
assert_equal 49, @site.posts.size assert_equal 50, @site.posts.size
end end
should "insert site.posts into the index" do should "insert site.posts into the index" do