2019-10-06 17:31:48 -04:00
|
|
|
defmodule PhilomenaWeb.PostView do
|
2019-11-26 20:45:57 -05:00
|
|
|
alias Philomena.Attribution
|
2020-05-07 22:43:40 -04:00
|
|
|
alias Philomena.Textile.Parser
|
2019-11-26 20:45:57 -05:00
|
|
|
|
2019-10-06 17:31:48 -04:00
|
|
|
use PhilomenaWeb, :view
|
2019-11-26 20:45:57 -05:00
|
|
|
|
|
|
|
def textile_safe_author(object) do
|
|
|
|
author_name = author_name(object)
|
2019-12-26 00:39:57 -05:00
|
|
|
at_author_name = "@" <> author_name
|
2019-11-26 20:45:57 -05:00
|
|
|
|
2019-12-26 00:39:57 -05:00
|
|
|
Parser.parse(%{image_transform: & &1}, at_author_name)
|
|
|
|
|> Parser.flatten()
|
2019-11-26 20:45:57 -05:00
|
|
|
|> case do
|
2019-12-26 00:39:57 -05:00
|
|
|
^at_author_name ->
|
2019-11-26 20:45:57 -05:00
|
|
|
author_name
|
|
|
|
|
|
|
|
_ ->
|
|
|
|
# Cover *all* possibilities.
|
|
|
|
literal =
|
|
|
|
author_name
|
|
|
|
|> String.replace("==]", "==]==][==")
|
|
|
|
|
|
|
|
"[==#{literal}==]"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
defp author_name(object) do
|
2019-11-26 23:52:49 -05:00
|
|
|
cond do
|
|
|
|
Attribution.anonymous?(object) || !object.user ->
|
|
|
|
PhilomenaWeb.UserAttributionView.anonymous_name(object)
|
|
|
|
|
|
|
|
true ->
|
|
|
|
object.user.name
|
2019-11-26 20:45:57 -05:00
|
|
|
end
|
|
|
|
end
|
2019-10-06 17:31:48 -04:00
|
|
|
end
|