Current section
Files
Jump to
Current section
Files
lib/api_json/template/moduledoc.ex
defmodule TwitchApi.ApiJson.Template.ModuleDoc do
@moduledoc """
Provides the module doc template for a twitch api item module
"""
alias TwitchApi.ApiJson.Item
@doc """
Creates a twitch api Elixir module doc template
"""
@spec create_moduledoc(Item.t()) :: binary
def create_moduledoc(item) do
request_doc = get_request_doc(item)
response_doc = get_response_doc(item)
"""
@moduledoc \"\"\"
⛔ This module is autogenerated please do not modify manually.
## Example request from twitch api docs:
#{request_doc}
## Example response from twitch api docs:
#{response_doc}
\"\"\"
"""
end
defp get_request_doc(item) do
descriptions = join_doc_items(item.doc.requests.descriptions)
requests = join_doc_items(item.doc.requests.requests)
"""
### descriptions:
#{descriptions}
### requests:
#{requests}
"""
end
defp get_response_doc(item) do
descriptions = join_doc_items(item.doc.responses.descriptions)
responses = join_doc_items(item.doc.responses.responses)
"""
### descriptions:
#{descriptions}
### responses:
#{responses}
"""
end
defp join_doc_items(items) do
items
|> Enum.map(fn item -> String.replace(item, "\n", "\n ") end)
|> Enum.map(fn item -> String.replace(item, "\n }", "\n }") end)
|> Enum.map_join(&(&1 <> "\n "))
end
end