diff options
author | kaniini <nenolod@gmail.com> | 2018-08-31 03:41:00 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2018-08-31 03:41:00 +0000 |
commit | a26d5e6b2aba5010c699df659d63048957b347a5 (patch) | |
tree | 0b7a68d223d2663c6aa64d8f3144dee1705e4e4f /lib/pleroma/web/common_api/utils.ex | |
parent | e838969495d2ca95406920ceef98d08f01d71192 (diff) | |
parent | e7871ed05e9ebc8e2fe2f1afe966285e767c682f (diff) | |
download | pleroma-a26d5e6b2aba5010c699df659d63048957b347a5.tar.gz |
Merge branch 'feature/rich-text' into 'develop'
rich text support
See merge request pleroma/pleroma!309
Diffstat (limited to 'lib/pleroma/web/common_api/utils.ex')
-rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 358ca22ac..667027c02 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -63,9 +63,16 @@ defmodule Pleroma.Web.CommonAPI.Utils do end end - def make_content_html(status, mentions, attachments, tags, no_attachment_links \\ false) do + def make_content_html( + status, + mentions, + attachments, + tags, + content_type, + no_attachment_links \\ false + ) do status - |> format_input(mentions, tags) + |> format_input(mentions, tags, content_type) |> maybe_add_attachments(attachments, no_attachment_links) end @@ -92,9 +99,9 @@ defmodule Pleroma.Web.CommonAPI.Utils do Enum.join([text | attachment_text], "<br>") end - def format_input(text, mentions, tags) do + def format_input(text, mentions, tags, "text/plain") do text - |> Formatter.html_escape() + |> Formatter.html_escape("text/plain") |> String.replace(~r/\r?\n/, "<br>") |> (&{[], &1}).() |> Formatter.add_links() @@ -103,6 +110,25 @@ defmodule Pleroma.Web.CommonAPI.Utils do |> Formatter.finalize() end + def format_input(text, mentions, tags, "text/html") do + text + |> Formatter.html_escape("text/html") + |> String.replace(~r/\r?\n/, "<br>") + |> (&{[], &1}).() + |> Formatter.add_user_links(mentions) + |> Formatter.finalize() + end + + def format_input(text, mentions, tags, "text/markdown") do + text + |> Earmark.as_html!() + |> Formatter.html_escape("text/html") + |> String.replace(~r/\r?\n/, "") + |> (&{[], &1}).() + |> Formatter.add_user_links(mentions) + |> Formatter.finalize() + end + def add_tag_links(text, tags) do tags = tags |