[ruby/rdoc] Fix ToRdoc#accept_table

(https://github.com/ruby/rdoc/pull/1184)

https://github.com/ruby/rdoc/commit/7b68545094
This commit is contained in:
tomoya ishida 2024-10-03 21:27:39 +09:00 committed by git
parent b421964b9d
commit 218445bb1f
6 changed files with 65 additions and 4 deletions

View File

@ -249,8 +249,8 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
# Adds +table+ to the output
def accept_table header, body, aligns
widths = header.zip(body) do |h, b|
[h.size, b.size].max
widths = header.zip(*body).map do |cols|
cols.map(&:size).max
end
aligns = aligns.map do |a|
case a
@ -262,12 +262,12 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
:rjust
end
end
@res << header.zip(widths, aligns) do |h, w, a|
@res << header.zip(widths, aligns).map do |h, w, a|
h.__send__(a, w)
end.join("|").rstrip << "\n"
@res << widths.map {|w| "-" * w }.join("|") << "\n"
body.each do |row|
@res << row.zip(widths, aligns) do |t, w, a|
@res << row.zip(widths, aligns).map do |t, w, a|
t.__send__(a, w)
end.join("|").rstrip << "\n"
end

View File

@ -99,6 +99,23 @@ class RDoc::Markup::TextFormatterTestCase < RDoc::Markup::FormatterTestCase
accept_paragraph_wrap
end
##
# Test case that calls <tt>@to.accept_table</tt>
def test_accept_table_align
header = ['AA', 'BB', 'CCCCC']
body = [
['', 'bbb', 'c'],
['aaaa', 'b', ''],
['a', '', 'cc']
]
aligns = [nil, :left, :right]
@to.start_accepting
@to.accept_table header, body, aligns
accept_table_align
end
##
# Test case that calls <tt>@to.attributes</tt> with an escaped
# cross-reference. If this test doesn't pass something may be very

View File

@ -348,6 +348,17 @@ words words words words
assert_equal expected, @to.end_accepting
end
def accept_table_align
expected = "\e[0m" + <<-EXPECTED
AA |BB |CCCCC
----|---|-----
|bbb| c
aaaa|b |
a | | cc
EXPECTED
assert_equal expected, @to.end_accepting
end
# functional test
def test_convert_list_note
note_list = <<-NOTE_LIST

View File

@ -349,4 +349,15 @@ words words words words
assert_equal expected, @to.end_accepting
end
def accept_table_align
expected = <<-EXPECTED
AA |BB |CCCCC
----|---|-----
|bbb| c
aaaa|b |
a | | cc
EXPECTED
assert_equal expected, @to.end_accepting
end
end

View File

@ -346,6 +346,17 @@ words words words words
assert_equal expected, @to.end_accepting
end
def accept_table_align
expected = <<-EXPECTED
AA |BB |CCCCC
----|---|-----
|bbb| c
aaaa|b |
a | | cc
EXPECTED
assert_equal expected, @to.end_accepting
end
def test_convert_RDOCLINK
result = @to.convert 'rdoc-garbage:C'

View File

@ -346,6 +346,17 @@ words words words words
assert_equal expected, @to.end_accepting
end
def accept_table_align
expected = <<-EXPECTED
AA |BB |CCCCC
----|---|-----
|bbb| c
aaaa|b |
a | | cc
EXPECTED
assert_equal expected, @to.end_accepting
end
# functional test
def test_convert_list_note
note_list = <<-NOTE_LIST