diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index f6333b3fe..c91c61718 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -585,7 +585,7 @@ class RedCloth3 < String last_line = line_id end if line_id - last_line > 1 or line_id == lines.length - 1 - depth.delete_if do |v| + while v = depth.pop lines[last_line] << "\n\t" end end diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb index 4253b7152..548a378b5 100644 --- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb @@ -110,6 +110,36 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase ) end + def test_nested_lists + raw = <<-RAW +# Item 1 +# Item 2 +** Item 2a +** Item 2b +# Item 3 +** Item 3a +RAW + + expected = <<-EXPECTED +
    +
  1. Item 1
  2. +
  3. Item 2 + +
  4. +
  5. Item 3 + +
  6. +
+EXPECTED + + assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '') + end + def test_escaping assert_html_output( 'this is a