Skip to content

Commit 0551151

Browse files
committed
Trim even spaces only in code
Fix #1403
1 parent fbf643c commit 0551151

File tree

2 files changed

+44
-18
lines changed

2 files changed

+44
-18
lines changed

lib/rdoc/markdown.kpeg

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@
501501
# Wraps `text` in code markup for rdoc inline formatting
502502

503503
def code text
504+
# trim even spaces
505+
text = $2 while /\A( +|\t+)(.*)\1\z/ =~ text
504506
# escape unescaped backslash at the end
505507
backslash_at_end = "\\" if /(?<!\\)(?:\\\\)*\\\z/.match?(text)
506508
"<code>#{text}#{backslash_at_end}</code>"
@@ -1113,30 +1115,30 @@ Ticks3 = "```" !"`"
11131115
Ticks4 = "````" !"`"
11141116
Ticks5 = "`````" !"`"
11151117

1116-
Code = ( Ticks1 @Sp < (
1118+
Code = ( Ticks1 < (
11171119
( !"`" Nonspacechar )+ | !Ticks1 /`+/ |
1118-
!( @Sp Ticks1 ) ( @Spacechar | @Newline !@BlankLine )
1119-
)+ > @Sp Ticks1 |
1120-
Ticks2 @Sp < (
1120+
!Ticks1 ( @Spacechar | @Newline !@BlankLine )
1121+
)+ > Ticks1 |
1122+
Ticks2 < (
11211123
( !"`" Nonspacechar )+ |
11221124
!Ticks2 /`+/ |
1123-
!( @Sp Ticks2 ) ( @Spacechar | @Newline !@BlankLine )
1124-
)+ > @Sp Ticks2 |
1125-
Ticks3 @Sp < (
1125+
!Ticks2 ( @Spacechar | @Newline !@BlankLine )
1126+
)+ > Ticks2 |
1127+
Ticks3 < (
11261128
( !"`" Nonspacechar )+ |
11271129
!Ticks3 /`+/ |
1128-
!( @Sp Ticks3 ) ( @Spacechar | @Newline !@BlankLine )
1129-
)+ > @Sp Ticks3 |
1130-
Ticks4 @Sp < (
1130+
!Ticks3 ( @Spacechar | @Newline !@BlankLine )
1131+
)+ > Ticks3 |
1132+
Ticks4 < (
11311133
( !"`" Nonspacechar )+ |
11321134
!Ticks4 /`+/ |
1133-
!( @Sp Ticks4 ) ( @Spacechar | @Newline !@BlankLine )
1134-
)+ > @Sp Ticks4 |
1135-
Ticks5 @Sp < (
1135+
!Ticks4 ( @Spacechar | @Newline !@BlankLine )
1136+
)+ > Ticks4 |
1137+
Ticks5 < (
11361138
( !"`" Nonspacechar )+ |
11371139
!Ticks5 /`+/ |
1138-
!( @Sp Ticks5 ) ( @Spacechar | @Newline !@BlankLine )
1139-
)+ > @Sp Ticks5
1140+
!Ticks5 ( @Spacechar | @Newline !@BlankLine )
1141+
)+ > Ticks5
11401142
)
11411143
{ code text }
11421144

test/rdoc/rdoc_markdown_test.rb

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,14 @@ def test_parse_code
139139
expected = doc(para("Code: <code>text</code>"))
140140
assert_equal expected, doc
141141

142+
doc = parse "Code: ` text`"
143+
expected = doc(para("Code: <code> text</code>"))
144+
assert_equal expected, doc
145+
146+
doc = parse "Code: `text `"
147+
expected = doc(para("Code: <code>text </code>"))
148+
assert_equal expected, doc
149+
142150
doc = parse "Code: ` text `"
143151
expected = doc(para("Code: <code>text</code>"))
144152
assert_equal expected, doc
@@ -147,6 +155,14 @@ def test_parse_code
147155
expected = doc(para("Code: <code>text`s</code>"))
148156
assert_equal expected, doc
149157

158+
doc = parse "Code: `` text`s``"
159+
expected = doc(para("Code: <code> text`s</code>"))
160+
assert_equal expected, doc
161+
162+
doc = parse "Code: ``text`s ``"
163+
expected = doc(para("Code: <code>text`s </code>"))
164+
assert_equal expected, doc
165+
150166
doc = parse "Code: `` text`s ``"
151167
expected = doc(para("Code: <code>text`s</code>"))
152168
assert_equal expected, doc
@@ -155,6 +171,14 @@ def test_parse_code
155171
expected = doc(para("Code: <code>text`s</code>"))
156172
assert_equal expected, doc
157173

174+
doc = parse "Code: ``` text`s```"
175+
expected = doc(para("Code: <code> text`s</code>"))
176+
assert_equal expected, doc
177+
178+
doc = parse "Code: ```text`s ```"
179+
expected = doc(para("Code: <code>text`s </code>"))
180+
assert_equal expected, doc
181+
158182
doc = parse "Code: ``` text`s ```"
159183
expected = doc(para("Code: <code>text`s</code>"))
160184
assert_equal expected, doc
@@ -223,7 +247,7 @@ def test_parse_code_github_format
223247
doc = <<-MD
224248
Example:
225249
226-
``` ruby
250+
```ruby
227251
code goes here
228252
```
229253
MD
@@ -1201,14 +1225,14 @@ def test_gfm_table_with_backslashes_in_code_spans
12011225

12021226
body = [
12031227
['Plain', '<code>$\\\\</code>', 'Should show backslash'],
1204-
['Escaped', '<code>$\\\\</code>', 'Should show backslash'],
1228+
['Escaped', '<code>$\\\\ </code>', 'Should show backslash'],
12051229
['Multiple', '<code>\\\\n\\\\t</code>', 'Should show backslashes'],
12061230
]
12071231

12081232
expected_table = @RM::Table.new(head, align, body)
12091233

12101234
expected = doc(
1211-
para('Plain text: <code>$\\\\</code> and <code>$\\\\</code> should work.'),
1235+
para('Plain text: <code>$\\\\</code> and <code>$\\\\ </code> should work.'),
12121236
expected_table
12131237
)
12141238

0 commit comments

Comments
 (0)