Skip to content

Commit 981f0b0

Browse files
committed
refactor
1 parent 99cf031 commit 981f0b0

File tree

1 file changed

+46
-49
lines changed

1 file changed

+46
-49
lines changed

lib/ex_doc/retriever.ex

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,11 @@ defmodule ExDoc.Retriever do
144144

145145
moduledoc_groups = Map.get(metadata, :groups, [])
146146

147-
{docs_groups, docs} =
147+
docs_groups =
148148
get_docs_groups(moduledoc_groups ++ config.docs_groups ++ module_data.default_groups, docs)
149149

150+
docs = Enum.map(docs, &Map.put(&1, :group, &1.group.title))
151+
150152
metadata = Map.put(metadata, :kind, module_data.type)
151153
group = GroupMatcher.match_module(config.groups_for_modules, module, module_data.id, metadata)
152154
{nested_title, nested_context} = module_data.nesting_info || {nil, nil}
@@ -204,54 +206,6 @@ defmodule ExDoc.Retriever do
204206
filter_defaults(nodes)
205207
end
206208

207-
defp get_docs_groups(module_groups, doc_nodes) do
208-
module_groups = Enum.map(module_groups, &normalize_group/1)
209-
210-
# Doc nodes already have normalized groups
211-
nodes_groups = Enum.map(doc_nodes, & &1.group)
212-
nodes_groups_descriptions = Map.new(nodes_groups, &{&1.title, &1.description})
213-
214-
normal_groups = module_groups ++ nodes_groups
215-
216-
{docs_groups, _} =
217-
Enum.flat_map_reduce(normal_groups, %{}, fn
218-
group, seen when is_map_key(seen, group.title) ->
219-
{[], seen}
220-
221-
group, seen ->
222-
seen = Map.put(seen, group.title, group.description)
223-
224-
group =
225-
case group do
226-
%{description: nil} ->
227-
description = Map.get(nodes_groups_descriptions, group.title, nil)
228-
Map.put(group, :description, description)
229-
230-
_ ->
231-
group
232-
end
233-
234-
{[group], seen}
235-
end)
236-
237-
docs_groups =
238-
Enum.map(docs_groups, fn group ->
239-
doc_ast =
240-
case group.description do
241-
nil -> nil
242-
text -> doc_ast("text/markdown", %{"en" => text}, [])
243-
end
244-
245-
Map.merge(group, %{doc: doc_ast, rendered_doc: nil})
246-
end)
247-
248-
# We do not need the full group data in each doc node anymore, only the
249-
# title.
250-
doc_nodes = Enum.map(doc_nodes, &Map.put(&1, :group, &1.group.title))
251-
252-
{docs_groups, doc_nodes}
253-
end
254-
255209
defp get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs) do
256210
{:docs_v1, _, _, content_type, _, module_metadata, _} = module_data.docs
257211
{{type, name, arity}, anno, _signature, source_doc, metadata} = doc
@@ -315,6 +269,49 @@ defmodule ExDoc.Retriever do
315269
end)
316270
end
317271

272+
defp get_docs_groups(module_groups, doc_nodes) do
273+
module_groups = Enum.map(module_groups, &normalize_group/1)
274+
275+
# Doc nodes already have normalized groups
276+
nodes_groups = Enum.map(doc_nodes, & &1.group)
277+
nodes_groups_descriptions = Map.new(nodes_groups, &{&1.title, &1.description})
278+
279+
normal_groups = module_groups ++ nodes_groups
280+
281+
{docs_groups, _} =
282+
Enum.flat_map_reduce(normal_groups, %{}, fn
283+
group, seen when is_map_key(seen, group.title) ->
284+
{[], seen}
285+
286+
group, seen ->
287+
seen = Map.put(seen, group.title, true)
288+
group = finalize_group(group, nodes_groups_descriptions)
289+
{[group], seen}
290+
end)
291+
292+
docs_groups
293+
end
294+
295+
defp finalize_group(group, description_fallbacks) do
296+
description =
297+
case group.description do
298+
nil -> Map.get(description_fallbacks, group.title)
299+
text -> text
300+
end
301+
302+
doc_ast =
303+
case description do
304+
nil -> nil
305+
text -> doc_ast("text/markdown", %{"en" => text}, [])
306+
end
307+
308+
Map.merge(group, %{
309+
description: description,
310+
doc: doc_ast,
311+
rendered_doc: nil
312+
})
313+
end
314+
318315
## General helpers
319316

320317
defp nil_or_name(name, arity) do

0 commit comments

Comments
 (0)