diff --git a/lib/rdoc/markup/to_rdoc.rb b/lib/rdoc/markup/to_rdoc.rb index 88234f5096..90763ccfdb 100644 --- a/lib/rdoc/markup/to_rdoc.rb +++ b/lib/rdoc/markup/to_rdoc.rb @@ -249,8 +249,8 @@ def accept_verbatim verbatim # 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 @@ def accept_table header, body, aligns :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 diff --git a/test/rdoc/support/text_formatter_test_case.rb b/test/rdoc/support/text_formatter_test_case.rb index e359028a29..9b3d7ed626 100644 --- a/test/rdoc/support/text_formatter_test_case.rb +++ b/test/rdoc/support/text_formatter_test_case.rb @@ -99,6 +99,23 @@ def test_accept_paragraph_wrap accept_paragraph_wrap end + ## + # Test case that calls @to.accept_table + + 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 @to.attributes with an escaped # cross-reference. If this test doesn't pass something may be very diff --git a/test/rdoc/test_rdoc_markup_to_ansi.rb b/test/rdoc/test_rdoc_markup_to_ansi.rb index 81372c64d2..893040cb44 100644 --- a/test/rdoc/test_rdoc_markup_to_ansi.rb +++ b/test/rdoc/test_rdoc_markup_to_ansi.rb @@ -348,6 +348,17 @@ def list_verbatim 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 diff --git a/test/rdoc/test_rdoc_markup_to_bs.rb b/test/rdoc/test_rdoc_markup_to_bs.rb index 7ebde481e6..93baa6b59f 100644 --- a/test/rdoc/test_rdoc_markup_to_bs.rb +++ b/test/rdoc/test_rdoc_markup_to_bs.rb @@ -349,4 +349,15 @@ def list_verbatim 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 diff --git a/test/rdoc/test_rdoc_markup_to_markdown.rb b/test/rdoc/test_rdoc_markup_to_markdown.rb index 92ed37bc50..1b24eb8ef0 100644 --- a/test/rdoc/test_rdoc_markup_to_markdown.rb +++ b/test/rdoc/test_rdoc_markup_to_markdown.rb @@ -346,6 +346,17 @@ def list_verbatim 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' diff --git a/test/rdoc/test_rdoc_markup_to_rdoc.rb b/test/rdoc/test_rdoc_markup_to_rdoc.rb index 50f4b6dc8b..c6f1aeae10 100644 --- a/test/rdoc/test_rdoc_markup_to_rdoc.rb +++ b/test/rdoc/test_rdoc_markup_to_rdoc.rb @@ -346,6 +346,17 @@ def list_verbatim 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