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