Packages
ex_doc
0.16.0
0.40.3
0.40.2
0.40.1
0.40.0
0.39.3
0.39.2
0.39.1
0.39.0
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.3
0.37.2
0.37.1
0.37.0
0.37.0-rc.2
0.37.0-rc.1
0.37.0-rc.0
0.36.1
0.36.0
0.35.1
0.35.0
0.34.2
0.34.1
0.34.0
0.33.0
0.32.2
0.32.1
0.32.0
0.31.2
0.31.1
0.31.0
0.30.9
0.30.8
0.30.7
0.30.6
0.30.5
0.30.4
0.30.3
0.30.2
0.30.1
0.30.0
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.6
0.28.5
0.28.4
0.28.3
0.28.2
0.28.1
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.0
0.25.5
0.25.4
0.25.3
0.25.2
0.25.1
0.25.0
0.24.2
0.24.1
0.24.0
0.23.0
0.22.6
0.22.5
0.22.4
0.22.2
0.22.1
0.22.0
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.19.0-rc
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
retired
0.17.1
0.17.0
retired
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.2
0.13.1
0.13.0
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
ExDoc is a documentation generation tool for Elixir
Current section
Files
Jump to
Current section
Files
lib/ex_doc/formatter/epub/templates.ex
defmodule ExDoc.Formatter.EPUB.Templates do
@moduledoc false
require EEx
alias ExDoc.Formatter.HTML
alias ExDoc.Formatter.HTML.Templates, as: H
@doc """
Generate content from the module template for a given `node`
"""
def module_page(config, module_node) do
summary_map = H.group_summary(module_node)
module_template(config, module_node, summary_map)
end
@doc """
Creates the Package Document Definition.
this definition encapsulates the publication metadata and the resource
information that constitute the EPUB publication. This definition also
includes the default reading order.
See http://www.idpf.org/epub/30/spec/epub30-publications.html#sec-package-def.
"""
EEx.function_from_file(:def, :content_template,
Path.expand("templates/content_template.eex", __DIR__),
[:config, :nodes, :uuid, :datetime, :static_files])
@doc """
Creates a chapter which contains all the details about an individual module.
This chapter can include the following sections: *functions*, *types*, *callbacks*.
"""
EEx.function_from_file(:def, :module_template,
Path.expand("templates/module_template.eex", __DIR__),
[:config, :module, :summary_map])
@doc """
Creates the table of contents.
This template follows the EPUB Navigation Document Definition.
See http://www.idpf.org/epub/30/spec/epub30-contentdocs.html#sec-xhtml-nav.
"""
EEx.function_from_file(:def, :nav_template,
Path.expand("templates/nav_template.eex", __DIR__),
[:config, :nodes])
@doc """
Creates a new chapter when the user provides additional files.
"""
EEx.function_from_file(:def, :extra_template,
Path.expand("templates/extra_template.eex", __DIR__),
[:config, :title, :content])
@doc """
Creates the cover page for the EPUB document.
"""
EEx.function_from_file(:def, :title_template,
Path.expand("templates/title_template.eex", __DIR__),
[:config])
EEx.function_from_file(:defp, :head_template,
Path.expand("templates/head_template.eex", __DIR__),
[:config, :page])
EEx.function_from_file(:defp, :nav_item_template,
Path.expand("templates/nav_item_template.eex", __DIR__),
[:name, :nodes])
EEx.function_from_file(:defp, :toc_item_template,
Path.expand("templates/toc_item_template.eex", __DIR__),
[:nodes])
"templates/media-types.txt"
|> Path.expand(__DIR__)
|> File.read!()
|> String.split("\n", trim: true)
|> Enum.each(fn(line) ->
[extension, media] = String.split(line, ",")
defp media_type("." <> unquote(extension)) do
unquote(media)
end
end)
defp media_type(arg), do: raise "asset with extension #{inspect arg} is not supported by EPUB format"
end