diff options
-rw-r--r-- | lib/redcloth3.rb | 19 | ||||
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb | 18 |
2 files changed, 28 insertions, 9 deletions
diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index 37816a06a..1e3d31ab1 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -380,14 +380,12 @@ class RedCloth3 < String re = case rtype when :limit - /(^|[>\s\(]) - (#{QTAGS_JOIN}|) - (#{rcq}) - (#{C}) - (?::(\S+?))? - (\w|[^\s].*?[^\s]) + /(^|[>\s\(]) # sta + (#{QTAGS_JOIN}|) # oqs + (#{rcq}) # qtag + (\w|[^\s].*?[^\s]) # content #{rcq} - (#{QTAGS_JOIN}|) + (#{QTAGS_JOIN}|) # oqa (?=[[:punct:]]|\s|\)|$)/x else /(#{rcq}) @@ -772,13 +770,16 @@ class RedCloth3 < String case rtype when :limit - sta,oqs,qtag,atts,cite,content,oqa = $~[1..7] + sta,oqs,qtag,content,oqa = $~[1..6] + atts = nil + if content =~ /^(#{C})(.+)$/ + atts, content = $~[1..2] + end else qtag,atts,cite,content = $~[1..4] sta = '' end atts = pba( atts ) - atts << " cite=\"#{ cite }\"" if cite atts = shelve( atts ) if atts "#{ sta }#{ oqs }<#{ ht }#{ atts }>#{ content }</#{ ht }>#{ oqa }" diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb index 49a75cd0f..8cb98ba51 100644 --- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb @@ -32,6 +32,24 @@ class Redmine::WikiFormatting::TextileFormatterTest < HelperTestCase "~" => 'sub' # subscript } + def test_modifiers + to_test = { + '*bold*' => '<strong>bold</strong>', + 'before *bold*' => 'before <strong>bold</strong>', + '*bold* after' => '<strong>bold</strong> after', + '*two words*' => '<strong>two words</strong>', + '*two*words*' => '<strong>two*words</strong>', + '*two * words*' => '<strong>two * words</strong>', + '*two* *words*' => '<strong>two</strong> <strong>words</strong>', + '*(two)* *(words)*' => '<strong>(two)</strong> <strong>(words)</strong>', + # with class + '*(foo)two words*' => '<strong class="foo">two words</strong>', + } + to_test.each do |text, expected| + assert_equal "<p>#{expected}</p>", @formatter.new(text).to_html + end + end + def test_modifiers_combination MODIFIERS.each do |m1, tag1| MODIFIERS.each do |m2, tag2| |