diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index f37026b68..89e6121cf 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\2')
- message.gsub!(/([^\\]|^)__(([^_]|([^_]_[^_]))*[^_\\])__/, '\1\2')
- message.gsub!(/([^\\]|^)\*([^*]*[^\\])\*/, '\1\2')
- message.gsub!(/([^\\]|^)_([^_]*[^\\])_/, '\1\2')
- 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, '\2')
+ message.gsub!(/(\*\*|__)(.+?)\1/m, '\2')
+ message.gsub!(/(\*|_)(.+?)\1/m, '\2')
+ 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 3682c2dfb..f093ed46d 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 == "some text *some text *some text some text _some text _some text"
+ markdownify(message).should == "some text *some text **some text some text _some text __some text"
end
describe "options" do