From 4c5251f127903628bbcec5ba4a1861fbf5d2efff Mon Sep 17 00:00:00 2001 From: Code Ahss Date: Thu, 28 Sep 2017 19:16:32 +0900 Subject: [PATCH 1/2] Fix CodeFence with unintended Array for format The rule ( !"`" Nonspacechar )+ for "format" variable becomes Array but #intern is called for "format" variable and it means "format" variable is expected as String, so this commit adds checking instance_of?(String). --- lib/rdoc/markdown.kpeg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rdoc/markdown.kpeg b/lib/rdoc/markdown.kpeg index 34f4de4657..e08aa5b828 100644 --- a/lib/rdoc/markdown.kpeg +++ b/lib/rdoc/markdown.kpeg @@ -1161,7 +1161,7 @@ CodeFence = &{ github? } @Newline )+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text - verbatim.format = format.intern if format + verbatim.format = format.intern if format.instance_of?(String) verbatim } From 07492e929ba540f6006d55724d8d269de8c9aba0 Mon Sep 17 00:00:00 2001 From: Code Ahss Date: Fri, 29 Sep 2017 00:03:17 +0900 Subject: [PATCH 2/2] Add test_code_fence_with_unintended_array --- test/test_rdoc_markdown.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/test_rdoc_markdown.rb b/test/test_rdoc_markdown.rb index 6c7bf4ae32..79b0175293 100644 --- a/test/test_rdoc_markdown.rb +++ b/test/test_rdoc_markdown.rb @@ -973,6 +973,14 @@ def test_strong assert_equal '_emphasis_', @parser.strong('_emphasis_') end + def test_code_fence_with_unintended_array + doc = parse '``````' + + expected = doc(verb('')) + + assert_equal expected, doc + end + def parse text @parser.parse text end