From c3356af8d1b8f865c5d617da2cb779aeea6bd035 Mon Sep 17 00:00:00 2001 From: MrZYX <pr0fkill@gmail.com> Date: Wed, 1 Dec 2010 20:59:26 +0100 Subject: [PATCH] mardownify doesn't strip _/__/*/** without context anymore and allow __/** to be escaped with \__/\** instead of \_\_/\*\*. probably makes it less robust against weired constructs though --- app/helpers/application_helper.rb | 19 +++++++++++-------- spec/helpers/application_helper_spec.rb | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f37026b688..89e6121cf8 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 3682c2dfb4..f093ed46d6 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 -- GitLab