diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-03-21 17:39:02 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-03-21 17:39:02 +0000 |
commit | 35a14cbfdc9fb65e046d22af02dbf95398284b5d (patch) | |
tree | 2ccb199ca80d0949d1d621ec0323733358ac5543 | |
parent | bbf422e22933c286e0779e51fd0cc797f339e134 (diff) | |
download | redmine-35a14cbfdc9fb65e046d22af02dbf95398284b5d.tar.gz redmine-35a14cbfdc9fb65e046d22af02dbf95398284b5d.zip |
Wiki links:
* fixes wiki links with pipe in table (closes #893, #870, #894)
* prevent wiki link matching on multiple lines
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1280 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/helpers/application_helper.rb | 2 | ||||
-rw-r--r-- | lib/redcloth.rb | 3 | ||||
-rw-r--r-- | test/unit/helpers/application_helper_test.rb | 16 |
3 files changed, 18 insertions, 3 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f3b16bb26..510ecd15e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -239,7 +239,7 @@ module ApplicationHelper # [[project:|mytext]] # [[project:mypage]] # [[project:mypage|mytext]] - text = text.gsub(/(!)?(\[\[([^\]\|]+)(\|([^\]\|]+))?\]\])/) do |m| + text = text.gsub(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m| link_project = project esc, all, page, title = $1, $2, $3, $5 if esc.nil? diff --git a/lib/redcloth.rb b/lib/redcloth.rb index 14940cb88..9452c2670 100644 --- a/lib/redcloth.rb +++ b/lib/redcloth.rb @@ -510,7 +510,8 @@ class RedCloth < String ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m cells = [] - row.split( '|' ).each do |cell| + #row.split( /\(?!\[\[[^\]])|(?![^\[]\]\])/ ).each do |cell| + row.split( /\|(?![^\[\|]*\]\])/ ).each do |cell| ctyp = 'd' ctyp = 'h' if cell =~ /^_/ diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index 2b90b8f4b..66499c003 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -142,7 +142,21 @@ class ApplicationHelperTest < HelperTestCase "<pre><div>content</div></pre>" => "<pre><div>content</div></pre>", } to_test.each { |text, result| assert_equal result, textilizable(text) } - + end + + def test_wiki_links_in_tables + to_test = {"|Cell 11|Cell 12|Cell 13|\n|Cell 21|Cell 22||\n|Cell 31||Cell 33|" => + '<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>' + + '<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>' + } + @project = Project.find(1) + to_test.each { |text, result| assert_equal "<table>#{result}</table>", textilizable(text).gsub(/[\t\n]/, '') } end def test_macro_hello_world |