['^', '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})
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 = ''
atts << " cite=\"#{ cite }\"" if cite
atts = shelve( atts ) if atts
- "#{ sta }<#{ ht }#{ atts }>#{ content }</#{ ht }>"
+ "#{ sta }#{ oqs }<#{ ht }#{ atts }>#{ content }</#{ ht }>#{ oqa }"
end
end
--- /dev/null
+# 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