logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: dcfd494e97bfecf62a6a31514ec69f374b41c870
parent: 70024632ba32121bd63a439b2d708d4b4ff1a190
Author: Roger Braun <roger@rogerbraun.net>
Date:   Wed, 17 May 2017 18:00:09 +0200

Add Formatter.

Diffstat:

Alib/pleroma/formatter.ex13+++++++++++++
Atest/formatter_test.exs28++++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/lib/pleroma/formatter.ex 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 @@ -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