Fixed: some textile modifiers combinations don't work, eg. bold inside underline (#5045).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3561 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
c7c3c0cc7c
commit
4e5078ebb0
|
@ -373,17 +373,21 @@ class RedCloth3 < String
|
|||
['^', 'sup', :limit],
|
||||
['~', 'sub', :limit]
|
||||
]
|
||||
QTAGS_JOIN = QTAGS.map {|rc, ht, rtype| Regexp::quote rc}.join('|')
|
||||
|
||||
QTAGS.collect! do |rc, ht, rtype|
|
||||
rcq = Regexp::quote rc
|
||||
re =
|
||||
case rtype
|
||||
when :limit
|
||||
/(^|[>\s\(])
|
||||
(#{QTAGS_JOIN}|)
|
||||
(#{rcq})
|
||||
(#{C})
|
||||
(?::(\S+?))?
|
||||
(\w|[^\s\-].*?[^\s\-])
|
||||
(\w|[^\s].*?[^\s])
|
||||
#{rcq}
|
||||
(#{QTAGS_JOIN}|)
|
||||
(?=[[:punct:]]|\s|\)|$)/x
|
||||
else
|
||||
/(#{rcq})
|
||||
|
@ -768,7 +772,7 @@ class RedCloth3 < String
|
|||
|
||||
case rtype
|
||||
when :limit
|
||||
sta,qtag,atts,cite,content = $~[1..5]
|
||||
sta,oqs,qtag,atts,cite,content,oqa = $~[1..7]
|
||||
else
|
||||
qtag,atts,cite,content = $~[1..4]
|
||||
sta = ''
|
||||
|
@ -777,7 +781,7 @@ class RedCloth3 < String
|
|||
atts << " cite=\"#{ cite }\"" if cite
|
||||
atts = shelve( atts ) if atts
|
||||
|
||||
"#{ sta }<#{ ht }#{ atts }>#{ content }</#{ ht }>"
|
||||
"#{ sta }#{ oqs }<#{ ht }#{ atts }>#{ content }</#{ ht }>#{ oqa }"
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2010 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../../../../test_helper'
|
||||
|
||||
class Redmine::WikiFormatting::TextileFormatterTest < HelperTestCase
|
||||
|
||||
def setup
|
||||
@formatter = Redmine::WikiFormatting::Textile::Formatter
|
||||
end
|
||||
|
||||
MODIFIERS = {
|
||||
"*" => 'strong', # bold
|
||||
"_" => 'em', # italic
|
||||
"+" => 'ins', # underline
|
||||
"-" => 'del', # deleted
|
||||
"^" => 'sup', # superscript
|
||||
"~" => 'sub' # subscript
|
||||
}
|
||||
|
||||
def test_modifiers_combination
|
||||
MODIFIERS.each do |m1, tag1|
|
||||
MODIFIERS.each do |m2, tag2|
|
||||
next if m1 == m2
|
||||
text = "#{m2}#{m1}Phrase modifiers#{m1}#{m2}"
|
||||
html = "<p><#{tag2}><#{tag1}>Phrase modifiers</#{tag1}></#{tag2}></p>"
|
||||
assert_equal html, @formatter.new(text).to_html
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue