diff --git a/app/assets/javascripts/app/helpers/text_formatter.js b/app/assets/javascripts/app/helpers/text_formatter.js index 12d140c33..b33fb3b53 100644 --- a/app/assets/javascripts/app/helpers/text_formatter.js +++ b/app/assets/javascripts/app/helpers/text_formatter.js @@ -26,9 +26,11 @@ // process links // regex copied from: https://code.google.com/p/pagedown/source/browse/Markdown.Converter.js#1198 (and slightly expanded) - var linkRegex = /(\[.*\]:\s)?(<|\()((https?|ftp):\/\/[^\/'">\s][^'">\s]+?)(>|\))/gi; + var linkRegex = /(\[.*\]:\s)?(<|\()((?:(https?|ftp):\/\/[^\/'">\s]|www)[^'">\s]+?)(>|\))/gi; text = text.replace(linkRegex, function() { var unicodeUrl = arguments[3]; + unicodeUrl = ( unicodeUrl.match(/^www/) ) ? ('http://' + unicodeUrl) : unicodeUrl; + var addr = parse_url(unicodeUrl); if( !addr.host ) addr.host = ""; // must not be 'undefined' diff --git a/spec/javascripts/app/helpers/text_formatter_spec.js b/spec/javascripts/app/helpers/text_formatter_spec.js index 1d41d3aa9..d175e833e 100644 --- a/spec/javascripts/app/helpers/text_formatter_spec.js +++ b/spec/javascripts/app/helpers/text_formatter_spec.js @@ -26,11 +26,16 @@ describe("app.helpers.textFormatter", function(){ // This test will fail if our join is just (" ") -- an edge case that should be addressed. it("autolinks", function(){ - var links = ["http://google.com", + var links = [ + "http://google.com", "https://joindiaspora.com", "http://www.yahooligans.com", "http://obama.com", - "http://japan.co.jp"] + "http://japan.co.jp", + "www.mygreat-example-website.de", + "www.jenseitsderfenster.de", // from issue #3468 + "www.google.com" + ]; // The join that would make this particular test fail: // @@ -40,7 +45,7 @@ describe("app.helpers.textFormatter", function(){ var wrapper = $("