diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-05-14 16:29:59 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-05-14 16:29:59 +0000 |
commit | b3d80d50a3a1f8bdf7ada546898ecb1818947b05 (patch) | |
tree | 92731357a9e528d8ef9a0d80bdae466242cb4467 | |
parent | 28ca9d240a8908797f68b1652b6e7a6d3c21c332 (diff) | |
download | redmine-b3d80d50a3a1f8bdf7ada546898ecb1818947b05.tar.gz redmine-b3d80d50a3a1f8bdf7ada546898ecb1818947b05.zip |
Fixed that ordered/unordered lists inside table cell are mangled (#14038).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11845 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | lib/redcloth3.rb | 3 | ||||
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb | 36 |
2 files changed, 38 insertions, 1 deletions
diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index 0d6ca324c..dbab20750 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -525,11 +525,12 @@ class RedCloth3 < String tatts = pba( tatts, 'table' ) tatts = shelve( tatts ) if tatts rows = [] - + fullrow.gsub!(/([^|])\n/, "\\1<br />") fullrow.each_line do |row| ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m cells = [] row.split( /(\|)(?![^\[\|]*\]\])/ )[1..-2].each do |cell| + Rails.logger.debug "cell: #{cell}" next if cell == '|' ctyp = 'd' ctyp = 'h' if cell =~ /^_/ 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 69c697daa..324cea1e6 100644 --- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb @@ -268,6 +268,42 @@ EXPECTED assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '') end + def test_tables_with_lists + raw = <<-RAW +This is a table with lists: + +|cell11|cell12| +|cell21|ordered list +# item +# item 2| +|cell31|unordered list +* item +* item 2| + +RAW + + expected = <<-EXPECTED +<p>This is a table with lists:</p> + +<table> + <tr> + <td>cell11</td> + <td>cell12</td> + </tr> + <tr> + <td>cell21</td> + <td>ordered list<br /># item<br /># item 2</td> + </tr> + <tr> + <td>cell31</td> + <td>unordered list<br />* item<br />* item 2</td> + </tr> +</table> +EXPECTED + + assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '') + end + def test_textile_should_not_mangle_brackets assert_equal '<p>[msg1][msg2]</p>', to_html('[msg1][msg2]') end |