summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-10-06 17:20:48 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-10-06 23:21:16 +0900
commit28e24ce35596b5faaf57f3ad4925656e22b23d1c (patch)
treef74fea28ffa5ba86b01b94b387568af28d7c8b69
parent7c03c82444220a4d1425cf801fa6a5d3d253b835 (diff)
[ruby/rdoc] Allow spaces around pipes
https://github.com/ruby/rdoc/commit/3b3a583580
-rw-r--r--lib/rdoc/markdown.rb68
-rw-r--r--test/rdoc/test_rdoc_markdown.rb2
2 files changed, 65 insertions, 5 deletions
diff --git a/lib/rdoc/markdown.rb b/lib/rdoc/markdown.rb
index e76d1d9888..8db9ae0f1d 100644
--- a/lib/rdoc/markdown.rb
+++ b/lib/rdoc/markdown.rb
@@ -16132,13 +16132,73 @@ class RDoc::Markdown
return _tmp
end
- # TableItem = < /(?:\\.|[^|\n])+/ > { text.strip.gsub(/\\(.)/, '\1') }
+ # TableItem = < (!"|" !@Newline .)+ > { text.strip }
def _TableItem
_save = self.pos
while true # sequence
_text_start = self.pos
- _tmp = scan(/\G(?-mix:(?:\\.|[^|\n])+)/)
+ _save1 = self.pos
+
+ _save2 = self.pos
+ while true # sequence
+ _save3 = self.pos
+ _tmp = match_string("|")
+ _tmp = _tmp ? nil : true
+ self.pos = _save3
+ unless _tmp
+ self.pos = _save2
+ break
+ end
+ _save4 = self.pos
+ _tmp = _Newline()
+ _tmp = _tmp ? nil : true
+ self.pos = _save4
+ unless _tmp
+ self.pos = _save2
+ break
+ end
+ _tmp = get_byte
+ unless _tmp
+ self.pos = _save2
+ end
+ break
+ end # end sequence
+
+ if _tmp
+ while true
+
+ _save5 = self.pos
+ while true # sequence
+ _save6 = self.pos
+ _tmp = match_string("|")
+ _tmp = _tmp ? nil : true
+ self.pos = _save6
+ unless _tmp
+ self.pos = _save5
+ break
+ end
+ _save7 = self.pos
+ _tmp = _Newline()
+ _tmp = _tmp ? nil : true
+ self.pos = _save7
+ unless _tmp
+ self.pos = _save5
+ break
+ end
+ _tmp = get_byte
+ unless _tmp
+ self.pos = _save5
+ end
+ break
+ end # end sequence
+
+ break unless _tmp
+ end
+ _tmp = true
+ else
+ self.pos = _save1
+ end
if _tmp
text = get_text(_text_start)
end
@@ -16146,7 +16206,7 @@ class RDoc::Markdown
self.pos = _save
break
end
- @result = begin; text.strip.gsub(/\\(.)/, '\1') ; end
+ @result = begin; text.strip ; end
_tmp = true
unless _tmp
self.pos = _save
@@ -16746,7 +16806,7 @@ class RDoc::Markdown
Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
- Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\(.)/, '\\1') }")
+ Rules[:_TableItem] = rule_info("TableItem", "< (!\"|\" !@Newline .)+ > { text.strip }")
Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? :left : text.end_with?(\":\") ? :right : nil }")
diff --git a/test/rdoc/test_rdoc_markdown.rb b/test/rdoc/test_rdoc_markdown.rb
index a02ff7c8cc..75195dab56 100644
--- a/test/rdoc/test_rdoc_markdown.rb
+++ b/test/rdoc/test_rdoc_markdown.rb
@@ -1065,7 +1065,7 @@ and an extra note.[^2]
def test_gfm_table_2
doc = parse <<~'MD'
| Cmd | Returns | Meaning
- ------|---------|--------
+ ----- | ------- | -------
|"b" | boolean | True if file1 is a block device
"c" | boolean | True if file1 is a character device
|"\|" | boolean | escaped bar \| test