From dcfd494e97bfecf62a6a31514ec69f374b41c870 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Wed, 17 May 2017 18:00:09 +0200 Subject: [PATCH] Add Formatter. --- lib/pleroma/formatter.ex | 13 +++++++++++++ test/formatter_test.exs | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 lib/pleroma/formatter.ex create mode 100644 test/formatter_test.exs 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, "\\0") + 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 https://www.youtube.com/watch?v=8Zg1-TufFzY." + + 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