]> source.dussan.org Git - redmine.git/commitdiff
Merged r13913, r13918 and r13919 (#18883).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Feb 2015 11:31:46 +0000 (11:31 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Feb 2015 11:31:46 +0000 (11:31 +0000)
git-svn-id: http://svn.redmine.org/redmine/branches/2.6-stable@14019 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redcloth3.rb

index 032e8bd678ad9029ba22aa5c7fbc243824817282..31a558799ada2aca7b6389f244fb14d1237e92e8 100644 (file)
@@ -529,13 +529,13 @@ class RedCloth3 < String
             fullrow.each_line do |row|
                 ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m
                 cells = []
-                row.split( /(\|)(?![^\[\|]*\]\])/ )[1..-2].each do |cell|
-                    next if cell == '|'
+                # the regexp prevents wiki links with a | from being cut as cells 
+                row.scan(/\|(_?#{S}#{A}#{C}\. ?)?((\[\[[^|\]]*\|[^|\]]*\]\]|[^|])*?)(?=\|)/) do |modifiers, cell|
                     ctyp = 'd'
-                    ctyp = 'h' if cell =~ /^_/
+                    ctyp = 'h' if modifiers && modifiers =~ /^_/
 
-                    catts = ''
-                    catts, cell = pba( $1, 'td' ), $2 if cell =~ /^(_?#{S}#{A}#{C}\. ?)(.*)/
+                    catts = nil
+                    catts = pba( modifiers, 'td' ) if modifiers
 
                     catts = shelve( catts ) if catts
                     cells << "\t\t\t<t#{ ctyp }#{ catts }>#{ cell }</t#{ ctyp }>" 
@@ -986,8 +986,8 @@ class RedCloth3 < String
     end
     
     def retrieve( text ) 
-        @shelf.each_with_index do |r, i|
-            text.gsub!( " :redsh##{ i + 1 }:", r )
+        text.gsub!(/ :redsh#(\d+):/) do
+          @shelf[$1.to_i - 1] || $&
         end
     end