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