diff --git a/lib/rdoc/markup/to_bs.rb b/lib/rdoc/markup/to_bs.rb index f9b86487db2153..afd9d6e9812497 100644 --- a/lib/rdoc/markup/to_bs.rb +++ b/lib/rdoc/markup/to_bs.rb @@ -40,6 +40,31 @@ def accept_heading heading @res << "\n" end + ## + # Prepares the visitor for consuming +list_item+ + + def accept_list_item_start list_item + type = @list_type.last + + case type + when :NOTE, :LABEL then + bullets = Array(list_item.label).map do |label| + attributes(label).strip + end.join "\n" + + bullets << ":\n" unless bullets.empty? + + @prefix = ' ' * @indent + @indent += 2 + @prefix << bullets + (' ' * @indent) + else + bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.' + @prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1) + width = bullet.length + 1 + @indent += width + end + end + ## # Turns on or off regexp handling for +convert_string+ diff --git a/lib/rdoc/markup/to_rdoc.rb b/lib/rdoc/markup/to_rdoc.rb index 692904958258d9..88234f5096d122 100644 --- a/lib/rdoc/markup/to_rdoc.rb +++ b/lib/rdoc/markup/to_rdoc.rb @@ -145,11 +145,19 @@ def accept_list_item_start list_item case type when :NOTE, :LABEL then - bullets = Array(list_item.label).map do |label| + stripped_labels = Array(list_item.label).map do |label| attributes(label).strip - end.join "\n" + end + + bullets = case type + when :NOTE + stripped_labels.map { |b| "#{b}::" } + when :LABEL + stripped_labels.map { |b| "[#{b}]" } + end - bullets << ":\n" unless bullets.empty? + bullets = bullets.join("\n") + bullets << "\n" unless stripped_labels.empty? @prefix = ' ' * @indent @indent += 2 diff --git a/test/rdoc/test_rdoc_markup_to_rdoc.rb b/test/rdoc/test_rdoc_markup_to_rdoc.rb index bb30ee52262da2..50f4b6dc8b1e8e 100644 --- a/test/rdoc/test_rdoc_markup_to_rdoc.rb +++ b/test/rdoc/test_rdoc_markup_to_rdoc.rb @@ -69,7 +69,7 @@ def accept_list_item_end_bullet end def accept_list_item_end_label - assert_equal "cat:\n", @to.res.join + assert_equal "[cat]\n", @to.res.join assert_equal 0, @to.indent, 'indent' end @@ -79,7 +79,7 @@ def accept_list_item_end_lalpha end def accept_list_item_end_note - assert_equal "cat:\n", @to.res.join + assert_equal "cat::\n", @to.res.join assert_equal 0, @to.indent, 'indent' end @@ -100,7 +100,7 @@ def accept_list_item_start_bullet def accept_list_item_start_label assert_equal [""], @to.res - assert_equal "cat:\n ", @to.prefix + assert_equal "[cat]\n ", @to.prefix assert_equal 2, @to.indent end @@ -115,7 +115,7 @@ def accept_list_item_start_lalpha def accept_list_item_start_note assert_equal [""], @to.res - assert_equal "cat:\n ", @to.prefix + assert_equal "cat::\n ", @to.prefix assert_equal 2, @to.indent end @@ -243,16 +243,16 @@ def accept_heading_suppressed_crossref end def accept_list_item_start_note_2 - assert_equal "teletype:\n teletype description\n\n", @to.res.join + assert_equal "teletype::\n teletype description\n\n", @to.res.join end def accept_list_item_start_note_multi_description - assert_equal "label:\n description one\n\n description two\n\n", + assert_equal "label::\n description one\n\n description two\n\n", @to.res.join end def accept_list_item_start_note_multi_label - assert_equal "one\ntwo:\n two headers\n\n", @to.res.join + assert_equal "one::\ntwo::\n two headers\n\n", @to.res.join end def accept_paragraph_b @@ -355,8 +355,8 @@ def test_convert_list_note NOTE_LIST expected = <<-EXPECTED -foo -bar: +foo:: +bar:: hi EXPECTED