Fixed that textile nested lists are not properly closed in output (#10642).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9430 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-04-18 12:00:54 +00:00
parent ee559c6820
commit 2cc294aa27
2 changed files with 31 additions and 1 deletions

View File

@ -585,7 +585,7 @@ class RedCloth3 < String
last_line = line_id last_line = line_id
end end
if line_id - last_line > 1 or line_id == lines.length - 1 if line_id - last_line > 1 or line_id == lines.length - 1
depth.delete_if do |v| while v = depth.pop
lines[last_line] << "</li>\n\t</#{ lT( v ) }l>" lines[last_line] << "</li>\n\t</#{ lT( v ) }l>"
end end
end end

View File

@ -110,6 +110,36 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase
) )
end end
def test_nested_lists
raw = <<-RAW
# Item 1
# Item 2
** Item 2a
** Item 2b
# Item 3
** Item 3a
RAW
expected = <<-EXPECTED
<ol>
<li>Item 1</li>
<li>Item 2
<ul>
<li>Item 2a</li>
<li>Item 2b</li>
</ul>
</li>
<li>Item 3
<ul>
<li>Item 3a</li>
</ul>
</li>
</ol>
EXPECTED
assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '')
end
def test_escaping def test_escaping
assert_html_output( assert_html_output(
'this is a <script>' => 'this is a &lt;script&gt;' 'this is a <script>' => 'this is a &lt;script&gt;'