1 defmodule Pleroma.Docs.Generator do
2 @callback process(keyword()) :: {:ok, String.t()}
4 @spec process(module(), keyword()) :: {:ok, String.t()}
5 def process(implementation, descriptions) do
6 implementation.process(descriptions)
9 @spec uploaders_list() :: [module()]
11 {:ok, modules} = :application.get_key(:pleroma, :modules)
13 Enum.filter(modules, fn module ->
14 name_as_list = Module.split(module)
16 List.starts_with?(name_as_list, ["Pleroma", "Uploaders"]) and
17 List.last(name_as_list) != "Uploader"
21 @spec filters_list() :: [module()]
23 {:ok, modules} = :application.get_key(:pleroma, :modules)
25 Enum.filter(modules, fn module ->
26 name_as_list = Module.split(module)
28 List.starts_with?(name_as_list, ["Pleroma", "Upload", "Filter"])
32 @spec mrf_list() :: [module()]
34 {:ok, modules} = :application.get_key(:pleroma, :modules)
36 Enum.filter(modules, fn module ->
37 name_as_list = Module.split(module)
39 List.starts_with?(name_as_list, ["Pleroma", "Web", "ActivityPub", "MRF"]) and
40 length(name_as_list) > 4
44 @spec richmedia_parsers() :: [module()]
45 def richmedia_parsers do
46 {:ok, modules} = :application.get_key(:pleroma, :modules)
48 Enum.filter(modules, fn module ->
49 name_as_list = Module.split(module)
51 List.starts_with?(name_as_list, ["Pleroma", "Web", "RichMedia", "Parsers"]) and
52 length(name_as_list) == 5
57 defimpl Jason.Encoder, for: Tuple do
58 def encode(tuple, opts) do
59 Jason.Encode.list(Tuple.to_list(tuple), opts)
63 defimpl Jason.Encoder, for: [Regex, Function] do
64 def encode(term, opts) do
65 Jason.Encode.string(inspect(term), opts)
69 defimpl String.Chars, for: Regex do
70 def to_string(term) do