diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-06-14 13:58:56 +0200 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-06-14 13:58:56 +0200 |
commit | 1af9c777365f3b54edcb572cea4e2e6f185b3099 (patch) | |
tree | 52e6e8b21c265dda04cbdfaadffdc30ed32f8313 /lib | |
parent | 93764439730d708a9a07375f9d840e8dd32156fb (diff) | |
download | pleroma-1af9c777365f3b54edcb572cea4e2e6f185b3099.tar.gz |
Move mention parsing to Formatter module.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/formatter.ex | 12 | ||||
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 13 |
2 files changed, 13 insertions, 12 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 5d989bc8c..5a241fe45 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -1,4 +1,5 @@ defmodule Pleroma.Formatter do + alias Pleroma.User @link_regex ~r/https?:\/\/[\w\.\/?=\-#]+[\w]/ def linkify(text) do @@ -10,4 +11,15 @@ defmodule Pleroma.Formatter do Regex.scan(@tag_regex, text) |> Enum.map(fn (["#" <> tag = full_tag]) -> {full_tag, tag} end) end + + def parse_mentions(text) do + # Modified from https://www.w3.org/TR/html5/forms.html#valid-e-mail-address + regex = ~r/@[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/ + + Regex.scan(regex, text) + |> List.flatten + |> Enum.uniq + |> Enum.map(fn ("@" <> match = full_match) -> {full_match, User.get_cached_by_nickname(match)} end) + |> Enum.filter(fn ({_match, user}) -> user end) + end end diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index cf9610723..07ac30cb2 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -31,7 +31,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do def create_status(%User{} = user, %{"status" => status} = data) do with attachments <- attachments_from_ids(data["media_ids"]), - mentions <- parse_mentions(status), + mentions <- Formatter.parse_mentions(status), inReplyTo <- get_replied_to_activity(data["in_reply_to_status_id"]), to <- to_for_user_and_mentions(user, mentions, inReplyTo), content_html <- make_content_html(status, mentions, attachments), @@ -182,17 +182,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do end end - def parse_mentions(text) do - # Modified from https://www.w3.org/TR/html5/forms.html#valid-e-mail-address - regex = ~r/@[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/ - - Regex.scan(regex, text) - |> List.flatten - |> Enum.uniq - |> Enum.map(fn ("@" <> match = full_match) -> {full_match, User.get_cached_by_nickname(match)} end) - |> Enum.filter(fn ({_match, user}) -> user end) - end - def register_user(params) do params = %{ nickname: params["nickname"], |