diff --git a/app/helpers/status_messages_helper.rb b/app/helpers/status_messages_helper.rb
index 80a20d00b..b999f1a49 100644
--- a/app/helpers/status_messages_helper.rb
+++ b/app/helpers/status_messages_helper.rb
@@ -19,6 +19,9 @@ module StatusMessagesHelper
# next line is important due to XSS! (h is rail's make_html_safe-function)
message = h(message).html_safe
+ message.gsub!(/\[([^\[]+)\]\(([^ ]+) \"(([^&]|(&[^q])|(&q[^u])|(&qu[^o])|(&quo[^t])|("[^;]))+)\"\)/, '\1')
+ message.gsub!(/\[([^\[]+)\]\(([^ ]+)\)/, '\1')
+
message.gsub!(/( |^)(www\.[^ ]+\.[^ ])/) do |m|
res = "#{$1}http://#{$2}"
res.gsub!(/^(\*|_)$/) { |m| "\\#{$1}" }
@@ -29,13 +32,16 @@ module StatusMessagesHelper
res.gsub!(/(\*|_)/) { |m| "\\#{$1}" }
res
end
- message.gsub!(/(https|http|ftp):\/\/([^ ]+)/) do |m|
- res = %{#{$2}}
- res.gsub!(/(\*|_)/) { |m| "\\#{$1}" }
- res
+ message.gsub!(/(#{$3}}
+ res.gsub!(/(\*|_)/) { |m| "\\#{$1}" }
+ res
+ end
end
- # markdown
message.gsub!(/([^\\]|^)\*\*(([^*]|([^*]\*[^*]))*[^*\\])\*\*/, '\1\2')
message.gsub!(/([^\\]|^)__(([^_]|([^_]_[^_]))*[^_\\])__/, '\1\2')
message.gsub!(/([^\\]|^)\*([^*]*[^\\])\*/, '\1\2')
diff --git a/spec/helpers/status_messages_helper_spec.rb b/spec/helpers/status_messages_helper_spec.rb
index 0f699781b..61ae88be0 100644
--- a/spec/helpers/status_messages_helper_spec.rb
+++ b/spec/helpers/status_messages_helper_spec.rb
@@ -104,6 +104,18 @@ describe StatusMessagesHelper do
end
end
+ describe "links" do
+ it "should be recognized without title attribute" do
+ message = "[link text](http://someurl.com) [link text](http://someurl.com)"
+ make_links(message).should == 'link text link text'
+ end
+
+ it "should be recognized with title attribute" do
+ message = '[link text](http://someurl.com "some title") [link text](http://someurl.com "some title")'
+ make_links(message).should == 'link text link text'
+ end
+ end
+
it "should allow escaping" do
message = '*some text* \\*some text* \\**some text* _some text_ \\_some text_ \\__some text_'
make_links(message).should == "some text *some text *some text some text _some text _some text"