Skip to content

Commit 1f9803c

Browse files
committed
do not store groups in DocNode temporarily
1 parent c7b426f commit 1f9803c

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

lib/ex_doc/nodes.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ defmodule ExDoc.DocNode do
8585
signature: String.t(),
8686
specs: [ExDoc.Language.spec_ast()],
8787
annotations: [annotation()],
88-
group: String.t() | ExDoc.DocGroupNode.t() | nil,
88+
group: String.t() | nil,
8989
doc_file: String.t(),
9090
doc_line: non_neg_integer(),
9191
source_url: String.t() | nil

lib/ex_doc/retriever.ex

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,15 @@ defmodule ExDoc.Retriever do
141141
group_for_doc = config.group_for_doc
142142
annotations_for_docs = config.annotations_for_docs
143143

144-
docs = get_docs(module_data, source, group_for_doc, annotations_for_docs)
144+
{docs, docs_groups} = get_docs(module_data, source, group_for_doc, annotations_for_docs)
145145

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

148148
docs_groups =
149-
get_docs_groups(moduledoc_groups ++ config.docs_groups ++ module_data.default_groups, docs)
150-
151-
docs = Enum.map(docs, &Map.put(&1, :group, &1.group.title))
149+
get_docs_groups(
150+
moduledoc_groups ++ config.docs_groups ++ module_data.default_groups,
151+
docs_groups
152+
)
152153

153154
metadata = Map.put(metadata, :kind, module_data.type)
154155
group = GroupMatcher.match_module(config.groups_for_modules, module, module_data.id, metadata)
@@ -203,13 +204,15 @@ defmodule ExDoc.Retriever do
203204
defp get_docs(module_data, source, group_for_doc, annotations_for_docs) do
204205
{:docs_v1, _, _, _, _, _, docs} = module_data.docs
205206

206-
nodes =
207+
{nodes, groups} =
207208
for doc <- docs,
208209
doc_data = module_data.language.doc_data(doc, module_data) do
209-
get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs)
210+
{_node, _group} =
211+
get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs)
210212
end
213+
|> Enum.unzip()
211214

212-
filter_defaults(nodes)
215+
{filter_defaults(nodes), groups}
213216
end
214217

215218
defp get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs) do
@@ -236,10 +239,10 @@ defmodule ExDoc.Retriever do
236239
doc_ast(content_type, source_doc, file: doc_file, line: doc_line + 1) ||
237240
doc_data.doc_fallback.()
238241

239-
group = normalize_group(group_for_doc.(metadata) || doc_data.default_group)
242+
group = normalize_group(group_for_doc.(metadata) || doc_data.default_group)
240243
id = doc_data.id_key <> nil_or_name(name, arity)
241244

242-
%ExDoc.DocNode{
245+
doc_node = %ExDoc.DocNode{
243246
id: id,
244247
name: name,
245248
arity: arity,
@@ -253,9 +256,11 @@ group = normalize_group(group_for_doc.(metadata) || doc_data.default_group)
253256
specs: doc_data.specs,
254257
source_url: source_url,
255258
type: doc_data.type,
256-
group: group,
259+
group: group.title,
257260
annotations: annotations
258261
}
262+
263+
{doc_node, group}
259264
end
260265

261266
defp get_defaults(_name, _arity, 0), do: []
@@ -276,11 +281,10 @@ group = normalize_group(group_for_doc.(metadata) || doc_data.default_group)
276281
end)
277282
end
278283

279-
defp get_docs_groups(module_groups, doc_nodes) do
284+
defp get_docs_groups(module_groups, nodes_groups) do
280285
module_groups = Enum.map(module_groups, &normalize_group/1)
281286

282287
# Doc nodes already have normalized groups
283-
nodes_groups = Enum.map(doc_nodes, & &1.group)
284288
nodes_groups_descriptions = Map.new(nodes_groups, &{&1.title, &1.description})
285289

286290
normal_groups = module_groups ++ nodes_groups

0 commit comments

Comments
 (0)