diff --git a/lib/rdoc/markdown.kpeg b/lib/rdoc/markdown.kpeg index 174206ea74..5d428c9c80 100644 --- a/lib/rdoc/markdown.kpeg +++ b/lib/rdoc/markdown.kpeg @@ -497,6 +497,15 @@ end end + ## + # Wraps `text` in code markup for rdoc inline formatting + + def code text + # escape unescaped backslash at the end + backslash_at_end = "\\" if /(?#{text}#{backslash_at_end}" + end + ## # Parses inline markdown in table cells @@ -1129,7 +1138,7 @@ Code = ( Ticks1 @Sp < ( !( @Sp Ticks5 ) ( @Spacechar | @Newline !@BlankLine ) )+ > @Sp Ticks5 ) - { "#{text}" } + { code text } RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end } diff --git a/test/rdoc/rdoc_markdown_test.rb b/test/rdoc/rdoc_markdown_test.rb index d33eec47f3..bd030da994 100644 --- a/test/rdoc/rdoc_markdown_test.rb +++ b/test/rdoc/rdoc_markdown_test.rb @@ -158,6 +158,34 @@ def test_parse_code doc = parse "Code: ``` text`s ```" expected = doc(para("Code: text`s")) assert_equal expected, doc + + doc = parse "Code: `\\`" + expected = doc(para("Code: \\\\")) + assert_equal expected, doc + + doc = parse "Code: ` \\ `" + expected = doc(para("Code: \\\\")) + assert_equal expected, doc + + doc = parse "Code: `\\`s`" + expected = doc(para("Code: \\\\s`")) + assert_equal expected, doc + + doc = parse "Code: ``\\`s``" + expected = doc(para("Code: \\`s")) + assert_equal expected, doc + + doc = parse "Code: `` \\`s ``" + expected = doc(para("Code: \\`s")) + assert_equal expected, doc + + doc = parse "Code: ```\\`s```" + expected = doc(para("Code: \\`s")) + assert_equal expected, doc + + doc = parse "Code: ``` \\`s ```" + expected = doc(para("Code: \\`s")) + assert_equal expected, doc end def test_parse_code_github