From 0e1776caf385c0c01ec207a8d6cda41f008dfe06 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 22 Feb 2021 21:34:11 +0900 Subject: [PATCH] Fixed CodeFence without blank lines Currently a fenced code block needs a preceding blank line, it should not be required, as: https://github.github.com/gfm/#fenced-code-blocks > A fenced code block may interrupt a paragraph, and does not > require a blank line either before or after. Just recommended: https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks > We recommend placing a blank line before and after code blocks > to make the raw formatting easier to read. --- lib/rdoc/markdown.kpeg | 3 ++- test/rdoc/test_rdoc_markdown.rb | 36 +++++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/lib/rdoc/markdown.kpeg b/lib/rdoc/markdown.kpeg index 8b78cdd114..90eccf202c 100644 --- a/lib/rdoc/markdown.kpeg +++ b/lib/rdoc/markdown.kpeg @@ -896,7 +896,8 @@ StyleBlock = < InStyleTags > end } Inlines = ( !@Endline Inline:i { i } - | @Endline:c &Inline { c } )+:chunks @Endline? + | @Endline:c !( &{ github? } Ticks3 /[^`\n]*$/ ) + &Inline { c } )+:chunks @Endline? { chunks } Inline = Str diff --git a/test/rdoc/test_rdoc_markdown.rb b/test/rdoc/test_rdoc_markdown.rb index 9c7a406224..efdd42447e 100644 --- a/test/rdoc/test_rdoc_markdown.rb +++ b/test/rdoc/test_rdoc_markdown.rb @@ -143,7 +143,7 @@ def test_parse_code end def test_parse_code_github - doc = parse <<-MD + doc = <<-MD Example: ``` @@ -156,11 +156,25 @@ def test_parse_code_github para("Example:"), verb("code goes here\n")) - assert_equal expected, doc + assert_equal expected, parse(doc) + assert_equal expected, parse(doc.sub(/^\n/, '')) + + @parser.github = false + + expected = + doc(para("Example:"), + para("\n""code goes here\n")) + + assert_equal expected, parse(doc) + + expected = + doc(para("Example:\n\n""code goes here\n")) + + assert_equal expected, parse(doc.sub(/^\n/, '')) end def test_parse_code_github_format - doc = parse <<-MD + doc = <<-MD Example: ``` ruby @@ -176,7 +190,21 @@ def test_parse_code_github_format para("Example:"), code) - assert_equal expected, doc + assert_equal expected, parse(doc) + assert_equal expected, parse(doc.sub(/^\n/, '')) + + @parser.github = false + + expected = + doc(para("Example:"), + para("ruby\n""code goes here\n")) + + assert_equal expected, parse(doc) + + expected = + doc(para("Example:\nruby\n""code goes here\n")) + + assert_equal expected, parse(doc.sub(/^\n/, '')) end def test_parse_definition_list