d859dfd8b938705e63a4aaaf9a9ee0a4e8eea278
[akkoma] / lib / pleroma / web / metadata.ex
1 defmodule Pleroma.Web.Metadata do
2 alias Phoenix.HTML
3
4 @providers Pleroma.Config.get([__MODULE__, :providers], [])
5
6 def build_tags(params) do
7 Enum.reduce(@providers, "", fn parser, acc ->
8 rendered_html =
9 params
10 |> parser.build_tags()
11 |> Enum.map(&to_tag/1)
12 |> Enum.map(&HTML.safe_to_string/1)
13 |> Enum.join()
14
15 acc <> rendered_html
16 end)
17 end
18
19 def to_tag(data) do
20 with {name, attrs, _content = []} <- data do
21 HTML.Tag.tag(name, attrs)
22 else
23 {name, attrs, content} ->
24 HTML.Tag.content_tag(name, content, attrs)
25
26 _ ->
27 raise ArgumentError, message: "make_tag invalid args"
28 end
29 end
30 end