diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f37026b68805f80351004c46e383d552e4032442..89e6121cf840ed072f8eabe55218355b975c425f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -186,14 +186,17 @@ module ApplicationHelper end if options[:emphasis] - message.gsub!(/([^\\]|^)\*\*(([^*]|([^*]\*[^*]))*[^*\\])\*\*/, '\1<strong>\2</strong>') - message.gsub!(/([^\\]|^)__(([^_]|([^_]_[^_]))*[^_\\])__/, '\1<strong>\2</strong>') - message.gsub!(/([^\\]|^)\*([^*]*[^\\])\*/, '\1<em>\2</em>') - message.gsub!(/([^\\]|^)_([^_]*[^\\])_/, '\1<em>\2</em>') - message.gsub!(/([^\\]|^)\*/, '\1') - message.gsub!(/([^\\]|^)_/, '\1') - message.gsub!("\\*", "*") - message.gsub!("\\_", "_") + message.gsub!("\\**", "-^doublestar^-") + message.gsub!("\\__", "-^doublescore^-") + message.gsub!("\\*", "-^star^-") + message.gsub!("\\_", "-^score^-") + message.gsub!(/(\*\*\*|___)(.+?)\1/m, '<em><strong>\2</strong></em>') + message.gsub!(/(\*\*|__)(.+?)\1/m, '<strong>\2</strong>') + message.gsub!(/(\*|_)(.+?)\1/m, '<em>\2</em>') + message.gsub!("-^doublestar^-", "**") + message.gsub!("-^doublescore^-", "__") + message.gsub!("-^star^-", "*") + message.gsub!("-^score^-", "_") end if options[:youtube] diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 3682c2dfb40363b0f5439de120401d57850519d5..f093ed46d67406fc234dd4d9fe6d618499a6a04c 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -171,7 +171,7 @@ describe ApplicationHelper do it "should allow escaping" do message = '*some text* \\*some text* \\**some text* _some text_ \\_some text_ \\__some text_' - markdownify(message).should == "<em>some text</em> *some text<em> *</em>some text <em>some text</em> _some text<em> _</em>some text" + markdownify(message).should == "<em>some text</em> *some text<em> **some text</em> <em>some text</em> _some text<em> __some text</em>" end describe "options" do