Allow empty cells in wiki tables.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1490 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
a77fb3b591
commit
735db3dae5
@ -504,26 +504,19 @@ class RedCloth < String
|
|||||||
tatts = shelve( tatts ) if tatts
|
tatts = shelve( tatts ) if tatts
|
||||||
rows = []
|
rows = []
|
||||||
|
|
||||||
fullrow.
|
fullrow.each_line do |row|
|
||||||
split( /\|$/m ).
|
|
||||||
delete_if { |x| x.empty? }.
|
|
||||||
each do |row|
|
|
||||||
|
|
||||||
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m
|
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m
|
||||||
|
|
||||||
cells = []
|
cells = []
|
||||||
#row.split( /\(?!\[\[[^\]])|(?![^\[]\]\])/ ).each do |cell|
|
row.split( /(\|)(?![^\[\|]*\]\])/ )[1..-2].each do |cell|
|
||||||
row.split( /\|(?![^\[\|]*\]\])/ ).each do |cell|
|
next if cell == '|'
|
||||||
ctyp = 'd'
|
ctyp = 'd'
|
||||||
ctyp = 'h' if cell =~ /^_/
|
ctyp = 'h' if cell =~ /^_/
|
||||||
|
|
||||||
catts = ''
|
catts = ''
|
||||||
catts, cell = pba( $1, 'td' ), $2 if cell =~ /^(_?#{S}#{A}#{C}\. ?)(.*)/
|
catts, cell = pba( $1, 'td' ), $2 if cell =~ /^(_?#{S}#{A}#{C}\. ?)(.*)/
|
||||||
|
|
||||||
unless cell.strip.empty?
|
catts = shelve( catts ) if catts
|
||||||
catts = shelve( catts ) if catts
|
cells << "\t\t\t<t#{ ctyp }#{ catts }>#{ cell }</t#{ ctyp }>"
|
||||||
cells << "\t\t\t<t#{ ctyp }#{ catts }>#{ cell }</t#{ ctyp }>"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
ratts = shelve( ratts ) if ratts
|
ratts = shelve( ratts ) if ratts
|
||||||
rows << "\t\t<tr#{ ratts }>\n#{ cells.join( "\n" ) }\n\t\t</tr>"
|
rows << "\t\t<tr#{ ratts }>\n#{ cells.join( "\n" ) }\n\t\t</tr>"
|
||||||
|
@ -152,12 +152,7 @@ class ApplicationHelperTest < HelperTestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_wiki_links_in_tables
|
def test_wiki_links_in_tables
|
||||||
to_test = {"|Cell 11|Cell 12|Cell 13|\n|Cell 21|Cell 22||\n|Cell 31||Cell 33|" =>
|
to_test = {"|[[Page|Link title]]|[[Other Page|Other title]]|\n|Cell 21|[[Last page]]|" =>
|
||||||
'<tr><td>Cell 11</td><td>Cell 12</td><td>Cell 13</td></tr>' +
|
|
||||||
'<tr><td>Cell 21</td><td>Cell 22</td></tr>' +
|
|
||||||
'<tr><td>Cell 31</td><td>Cell 33</td></tr>',
|
|
||||||
|
|
||||||
"|[[Page|Link title]]|[[Other Page|Other title]]|\n|Cell 21|[[Last page]]|" =>
|
|
||||||
'<tr><td><a href="/wiki/ecookbook/Page" class="wiki-page new">Link title</a></td>' +
|
'<tr><td><a href="/wiki/ecookbook/Page" class="wiki-page new">Link title</a></td>' +
|
||||||
'<td><a href="/wiki/ecookbook/Other_Page" class="wiki-page new">Other title</a></td>' +
|
'<td><a href="/wiki/ecookbook/Other_Page" class="wiki-page new">Other title</a></td>' +
|
||||||
'</tr><tr><td>Cell 21</td><td><a href="/wiki/ecookbook/Last_page" class="wiki-page new">Last page</a></td></tr>'
|
'</tr><tr><td>Cell 21</td><td><a href="/wiki/ecookbook/Last_page" class="wiki-page new">Last page</a></td></tr>'
|
||||||
@ -218,6 +213,28 @@ EXPECTED
|
|||||||
assert_equal expected.gsub(%r{\s+}, ''), textilizable(raw).gsub(%r{\s+}, '')
|
assert_equal expected.gsub(%r{\s+}, ''), textilizable(raw).gsub(%r{\s+}, '')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_table
|
||||||
|
raw = <<-RAW
|
||||||
|
This is a table with empty cells:
|
||||||
|
|
||||||
|
|cell11|cell12||
|
||||||
|
|cell21||cell23|
|
||||||
|
|cell31|cell32|cell33|
|
||||||
|
RAW
|
||||||
|
|
||||||
|
expected = <<-EXPECTED
|
||||||
|
<p>This is a table with empty cells:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><td>cell11</td><td>cell12</td><td></td></tr>
|
||||||
|
<tr><td>cell21</td><td></td><td>cell23</td></tr>
|
||||||
|
<tr><td>cell31</td><td>cell32</td><td>cell33</td></tr>
|
||||||
|
</table>
|
||||||
|
EXPECTED
|
||||||
|
|
||||||
|
assert_equal expected.gsub(%r{\s+}, ''), textilizable(raw).gsub(%r{\s+}, '')
|
||||||
|
end
|
||||||
|
|
||||||
def test_macro_hello_world
|
def test_macro_hello_world
|
||||||
text = "{{hello_world}}"
|
text = "{{hello_world}}"
|
||||||
assert textilizable(text).match(/Hello world!/)
|
assert textilizable(text).match(/Hello world!/)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user