diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-05-17 18:00:09 +0200 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-05-17 18:00:09 +0200 |
commit | dcfd494e97bfecf62a6a31514ec69f374b41c870 (patch) | |
tree | 3bda0d984e99b344bb90f1e31c2092a9365abe56 | |
parent | 70024632ba32121bd63a439b2d708d4b4ff1a190 (diff) | |
download | pleroma-dcfd494e97bfecf62a6a31514ec69f374b41c870.tar.gz |
Add Formatter.
-rw-r--r-- | lib/pleroma/formatter.ex | 13 | ||||
-rw-r--r-- | test/formatter_test.exs | 28 |
2 files changed, 41 insertions, 0 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex new file mode 100644 index 000000000..5d989bc8c --- /dev/null +++ b/lib/pleroma/formatter.ex @@ -0,0 +1,13 @@ +defmodule Pleroma.Formatter do + + @link_regex ~r/https?:\/\/[\w\.\/?=\-#]+[\w]/ + def linkify(text) do + Regex.replace(@link_regex, text, "<a href='\\0'>\\0</a>") + end + + @tag_regex ~r/\#\w+/u + def parse_tags(text) do + Regex.scan(@tag_regex, text) + |> Enum.map(fn (["#" <> tag = full_tag]) -> {full_tag, tag} end) + end +end diff --git a/test/formatter_test.exs b/test/formatter_test.exs new file mode 100644 index 000000000..bf09b246f --- /dev/null +++ b/test/formatter_test.exs @@ -0,0 +1,28 @@ +defmodule Pleroma.FormatterTest do + alias Pleroma.Formatter + use Pleroma.DataCase + + describe ".linkify" do + test "turning urls into links" do + text = "Hey, check out https://www.youtube.com/watch?v=8Zg1-TufFzY." + + expected = "Hey, check out <a href='https://www.youtube.com/watch?v=8Zg1-TufFzY'>https://www.youtube.com/watch?v=8Zg1-TufFzY</a>." + + assert Formatter.linkify(text) == expected + end + end + + describe ".parse_tags" do + test "parses tags in the text" do + text = "Here's a #test. Maybe these are #working or not. What about #漢字? And #は。" + expected = [ + {"#test", "test"}, + {"#working", "working"}, + {"#漢字", "漢字"}, + {"#は", "は"} + ] + + assert Formatter.parse_tags(text) == expected + end + end +end |