Add Formatter.

This commit is contained in:
Roger Braun 2017-05-17 18:00:09 +02:00
parent 70024632ba
commit dcfd494e97
2 changed files with 41 additions and 0 deletions

13
lib/pleroma/formatter.ex Normal file
View file

@ -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

28
test/formatter_test.exs Normal file
View file

@ -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