summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2022-10-06 13:10:31 +0900
committerNobuyoshi Nakada <[email protected]>2022-10-06 23:14:29 +0900
commita19bf47d03b51b339688c865c35bff0c0d2be6c1 (patch)
tree2f78e30c2f5546f7fc19bbc42a9d048f31c75857
parent76bae60d9b967415c5930c2c5906e14c8362a6dd (diff)
[ruby/rdoc] Allow trailing pipes to be ommitted
https://github.com/ruby/rdoc/commit/1318048877
-rw-r--r--lib/rdoc/markdown.rb18
-rw-r--r--test/rdoc/test_rdoc_markdown.rb19
2 files changed, 33 insertions, 4 deletions
diff --git a/lib/rdoc/markdown.rb b/lib/rdoc/markdown.rb
index 26b32f9b73..1149359927 100644
--- a/lib/rdoc/markdown.rb
+++ b/lib/rdoc/markdown.rb
@@ -15966,7 +15966,7 @@ class RDoc::Markdown
return _tmp
end
- # TableRow = TableItem+:row "|" @Newline { row }
+ # TableRow = TableItem+:row "|"? @Newline { row }
def _TableRow
_save = self.pos
@@ -15991,8 +15991,13 @@ class RDoc::Markdown
self.pos = _save
break
end
+ _save2 = self.pos
_tmp = match_string("|")
unless _tmp
+ _tmp = true
+ self.pos = _save2
+ end
+ unless _tmp
self.pos = _save
break
end
@@ -16104,7 +16109,7 @@ class RDoc::Markdown
return _tmp
end
- # TableLine = TableColumn+:line "|" @Newline { line }
+ # TableLine = TableColumn+:line "|"? @Newline { line }
def _TableLine
_save = self.pos
@@ -16129,8 +16134,13 @@ class RDoc::Markdown
self.pos = _save
break
end
+ _save2 = self.pos
_tmp = match_string("|")
unless _tmp
+ _tmp = true
+ self.pos = _save2
+ end
+ unless _tmp
self.pos = _save
break
end
@@ -16675,9 +16685,9 @@ class RDoc::Markdown
Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }")
Rules[:_Table] = rule_info("Table", "&{ github? } TableRow:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }")
- Rules[:_TableRow] = rule_info("TableRow", "TableItem+:row \"|\" @Newline { row }")
+ Rules[:_TableRow] = rule_info("TableRow", "TableItem+:row \"|\"? @Newline { row }")
Rules[:_TableItem] = rule_info("TableItem", "\"|\" < (!\"|\" !@Newline .)+ > { text.strip }")
- Rules[:_TableLine] = rule_info("TableLine", "TableColumn+:line \"|\" @Newline { line }")
+ Rules[:_TableLine] = rule_info("TableLine", "TableColumn+:line \"|\"? @Newline { line }")
Rules[:_TableColumn] = rule_info("TableColumn", "\"|\" < (\"-\"+ \":\"? | \":\" \"-\"*) > { text.start_with?(\":\") ? :left : text.end_with?(\":\") ? :right : nil }")
Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")
Rules[:_DefinitionListItem] = rule_info("DefinitionListItem", "DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = [] list_items << RDoc::Markup::ListItem.new(label, defns.shift) list_items.concat defns.map { |defn| RDoc::Markup::ListItem.new nil, defn } unless list_items.empty? list_items }")
diff --git a/test/rdoc/test_rdoc_markdown.rb b/test/rdoc/test_rdoc_markdown.rb
index ca76c34f43..4c45794343 100644
--- a/test/rdoc/test_rdoc_markdown.rb
+++ b/test/rdoc/test_rdoc_markdown.rb
@@ -1062,6 +1062,25 @@ and an extra note.[^2]
assert_equal expected, doc
end
+ 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
+ MD
+
+ head = %w[Cmd Returns Meaning]
+ align = [nil, nil, nil]
+ body = [
+ ['"b"', 'boolean', 'True if file1 is a block device'],
+ ['"c"', 'boolean', 'True if file1 is a character device'],
+ ]
+ expected = doc(@RM::Table.new(head, align, body))
+
+ assert_equal expected, doc
+ end
+
def parse text
@parser.parse text
end