Skip to content

Commit e85d853

Browse files
authored
Display description text in docs groups (#2113)
1 parent c17125a commit e85d853

20 files changed

+399
-145
lines changed

assets/css/content/general.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@
7171
margin: 1.5em 0 0.5em;
7272
}
7373

74+
.content-inner div.group-description {
75+
margin: 0 0 3em;
76+
}
77+
7478
.content-inner h1 small {
7579
font-weight: 400;
7680
}

formatters/html/dist/html-elixir-BHUPNQFZ.css

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formatters/html/dist/html-elixir-KV3YOVJ3.css

Lines changed: 0 additions & 6 deletions
This file was deleted.

formatters/html/dist/html-erlang-DQDXQC7W.css

Lines changed: 0 additions & 6 deletions
This file was deleted.

formatters/html/dist/html-erlang-U4PKJ7EN.css

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/ex_doc/formatter/epub/templates.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ defmodule ExDoc.Formatter.EPUB.Templates do
1616
Generate content from the module template for a given `node`
1717
"""
1818
def module_page(config, module_node) do
19-
summary = H.module_summary(module_node)
20-
module_template(config, module_node, summary)
19+
module_template(config, module_node)
2120
end
2221

2322
@doc """
@@ -53,7 +52,7 @@ defmodule ExDoc.Formatter.EPUB.Templates do
5352
:def,
5453
:module_template,
5554
Path.expand("templates/module_template.eex", __DIR__),
56-
[:config, :module, :summary],
55+
[:config, :module],
5756
trim: true
5857
)
5958

lib/ex_doc/formatter/epub/templates/module_template.eex

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,23 @@
1515
</section>
1616
<% end %>
1717

18-
<%= if summary != [] do %>
18+
<%= if module.docs_groups != [] do %>
1919
<section id="summary" class="details-list">
2020
<h1 class="section-heading">Summary</h1>
21-
<%= for {name, nodes} <- summary, do: H.summary_template(name, nodes) %>
21+
<%= for group <- module.docs_groups, do: H.summary_template(group.title, group.docs) %>
2222
</section>
2323
<% end %>
2424

25-
<%= for {name, nodes} <- summary, key = text_to_id(name) do %>
25+
<%= for group <- module.docs_groups, key = text_to_id(group.title) do %>
2626
<section id="<%= key %>" class="details-list">
27-
<h1 class="section-heading"><%=h to_string(name) %></h1>
27+
<h1 class="section-heading"><%=h to_string(group.title) %></h1>
28+
<%= if doc = group.doc do %>
29+
<div class="group-description" id="group-description-<%= key %>">
30+
<%= render_doc(doc) %>
31+
</div>
32+
<% end %>
2833
<div class="<%= key %>-list">
29-
<%= for node <- nodes, do: H.detail_template(node, module) %>
34+
<%= for node <- group.docs, do: H.detail_template(node, module) %>
3035
</div>
3136
</section>
3237
<% end %>

lib/ex_doc/formatter/html.ex

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,32 @@ defmodule ExDoc.Formatter.HTML do
8787
language: language
8888
] ++ base
8989

90-
docs =
91-
for child_node <- node.docs do
92-
id = id(node, child_node)
93-
94-
autolink_opts =
95-
autolink_opts ++
96-
[
97-
id: id,
98-
line: child_node.doc_line,
99-
file: child_node.doc_file,
100-
current_kfa: {child_node.type, child_node.name, child_node.arity}
101-
]
102-
103-
specs = Enum.map(child_node.specs, &language.autolink_spec(&1, autolink_opts))
104-
child_node = %{child_node | specs: specs}
105-
render_doc(child_node, language, autolink_opts, opts)
90+
docs_groups =
91+
for group <- node.docs_groups do
92+
docs =
93+
for child_node <- group.docs do
94+
id = id(node, child_node)
95+
96+
autolink_opts =
97+
autolink_opts ++
98+
[
99+
id: id,
100+
line: child_node.doc_line,
101+
file: child_node.doc_file,
102+
current_kfa: {child_node.type, child_node.name, child_node.arity}
103+
]
104+
105+
specs = Enum.map(child_node.specs, &language.autolink_spec(&1, autolink_opts))
106+
child_node = %{child_node | specs: specs}
107+
render_doc(child_node, language, autolink_opts, opts)
108+
end
109+
110+
%{render_doc(group, language, autolink_opts, opts) | docs: docs}
106111
end
107112

108113
%{
109114
render_doc(node, language, [{:id, node.id} | autolink_opts], opts)
110-
| docs: docs
115+
| docs_groups: docs_groups
111116
}
112117
end,
113118
timeout: :infinity

lib/ex_doc/formatter/html/search_data.ex

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ defmodule ExDoc.Formatter.HTML.SearchData do
4444
page = URI.encode(node.id) <> ".html"
4545
{intro, sections} = extract_sections(node.source_format, node, "module-")
4646
module = encode(page, node.title, node.type, intro)
47-
docs = Enum.flat_map(node.docs, &node_child(&1, node, page))
47+
48+
docs =
49+
node.docs_groups
50+
|> Enum.flat_map(& &1.docs)
51+
|> Enum.flat_map(&node_child(&1, node, page))
52+
4853
[module] ++ render_sections(sections, page, node.title, node.type) ++ docs
4954
end
5055

lib/ex_doc/formatter/html/templates.ex

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ defmodule ExDoc.Formatter.HTML.Templates do
1616
Generate content from the module template for a given `node`
1717
"""
1818
def module_page(module_node, config) do
19-
summary = module_summary(module_node)
20-
module_template(config, module_node, summary)
19+
module_template(config, module_node)
2120
end
2221

2322
@doc """
@@ -99,9 +98,7 @@ defmodule ExDoc.Formatter.HTML.Templates do
9998
modules =
10099
for module <- modules do
101100
groups =
102-
module
103-
|> module_summary()
104-
|> case do
101+
case module.docs_groups do
105102
[] -> []
106103
entries -> [nodeGroups: Enum.map(entries, &sidebar_entries/1)]
107104
end
@@ -123,9 +120,9 @@ defmodule ExDoc.Formatter.HTML.Templates do
123120
{id, modules}
124121
end
125122

126-
defp sidebar_entries({group, nodes}) do
123+
defp sidebar_entries(group) do
127124
nodes =
128-
for node <- nodes do
125+
for node <- group.docs do
129126
id =
130127
if "struct" in node.annotations do
131128
node.signature
@@ -142,7 +139,7 @@ defmodule ExDoc.Formatter.HTML.Templates do
142139
%{id: id, title: node.signature, anchor: URI.encode(node.id), deprecated: deprecated?}
143140
end
144141

145-
%{key: text_to_id(group), name: group, nodes: nodes}
142+
%{key: text_to_id(group.title), name: group.title, nodes: nodes}
146143
end
147144

148145
defp headers(doc) do
@@ -153,11 +150,6 @@ defmodule ExDoc.Formatter.HTML.Templates do
153150
end)
154151
end
155152

156-
def module_summary(module_node) do
157-
# TODO: Maybe it should be moved to retriever and it already returned grouped metadata
158-
ExDoc.GroupMatcher.group_by(module_node.docs_groups, module_node.docs, & &1.group)
159-
end
160-
161153
defp favicon_path(%{favicon: nil}), do: nil
162154
defp favicon_path(%{favicon: favicon}), do: "assets/favicon#{Path.extname(favicon)}"
163155

@@ -225,7 +217,7 @@ defmodule ExDoc.Formatter.HTML.Templates do
225217
detail_template: [:node, :module],
226218
footer_template: [:config, :source_path],
227219
head_template: [:config, :title, :noindex],
228-
module_template: [:config, :module, :summary],
220+
module_template: [:config, :module],
229221
not_found_template: [:config],
230222
api_reference_entry_template: [:module_node],
231223
api_reference_template: [:config, :nodes_map],

0 commit comments

Comments
 (0)