summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/redcloth3.rb19
-rw-r--r--test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb18
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|