From 7da978f3f54a8981c082625a8ad2fea48c918675 Mon Sep 17 00:00:00 2001
From: Roger Braun <rbraun@Bobble.local>
Date: Tue, 7 Nov 2017 12:06:37 +0100
Subject: [PATCH] Linkify fixes.

---
 lib/pleroma/formatter.ex |  2 +-
 test/formatter_test.exs  | 16 +++++++++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex
index f062d9a58..7ccd7e7bb 100644
--- a/lib/pleroma/formatter.ex
+++ b/lib/pleroma/formatter.ex
@@ -1,7 +1,7 @@
 defmodule Pleroma.Formatter do
   alias Pleroma.User
 
-  @link_regex ~r/https?:\/\/[\w\.\/?=\-#%&]+[\w]/u
+  @link_regex ~r/https?:\/\/[\w\.\/?=\-#%&@~]+[\w\/]/u
   def linkify(text) do
     Regex.replace(@link_regex, text, "<a href='\\0'>\\0</a>")
   end
diff --git a/test/formatter_test.exs b/test/formatter_test.exs
index d96f433f9..f91973881 100644
--- a/test/formatter_test.exs
+++ b/test/formatter_test.exs
@@ -7,10 +7,24 @@ defmodule Pleroma.FormatterTest do
   describe ".linkify" do
     test "turning urls into links" do
       text = "Hey, check out https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla."
-
       expected = "Hey, check out <a href='https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla'>https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla</a>."
 
       assert Formatter.linkify(text) == expected
+
+      text = "https://mastodon.social/@lambadalambda"
+      expected = "<a href='https://mastodon.social/@lambadalambda'>https://mastodon.social/@lambadalambda</a>"
+
+      assert Formatter.linkify(text) == expected
+
+      text = "@lambadalambda"
+      expected = "@lambadalambda"
+
+      assert Formatter.linkify(text) == expected
+
+      text = "http://www.cs.vu.nl/~ast/intel/"
+      expected = "<a href='http://www.cs.vu.nl/~ast/intel/'>http://www.cs.vu.nl/~ast/intel/</a>"
+
+      assert Formatter.linkify(text) == expected
     end
   end