Skip to content

Commit b5fcc4d

Browse files
committed
do not store groups in DocNode temporarily
1 parent 8db2c39 commit b5fcc4d

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

lib/ex_doc/nodes.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ defmodule ExDoc.DocNode do
8989
signature: String.t(),
9090
specs: [ExDoc.Language.spec_ast()],
9191
annotations: [annotation()],
92-
group: String.t() | ExDoc.DocGroupNode.t() | nil,
92+
group: String.t() | nil,
9393
doc_file: String.t(),
9494
doc_line: non_neg_integer(),
9595
source_url: String.t() | nil

lib/ex_doc/retriever.ex

+15-11
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,15 @@ defmodule ExDoc.Retriever do
140140
group_for_doc = config.group_for_doc
141141
annotations_for_docs = config.annotations_for_docs
142142

143-
docs = get_docs(module_data, source, group_for_doc, annotations_for_docs)
143+
{docs, docs_groups} = get_docs(module_data, source, group_for_doc, annotations_for_docs)
144144

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

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

152153
metadata = Map.put(metadata, :kind, module_data.type)
153154
group = GroupMatcher.match_module(config.groups_for_modules, module, module_data.id, metadata)
@@ -197,13 +198,15 @@ defmodule ExDoc.Retriever do
197198
defp get_docs(module_data, source, group_for_doc, annotations_for_docs) do
198199
{:docs_v1, _, _, _, _, _, docs} = module_data.docs
199200

200-
nodes =
201+
{nodes, groups} =
201202
for doc <- docs,
202203
doc_data = module_data.language.doc_data(doc, module_data) do
203-
get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs)
204+
{_node, _group} =
205+
get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs)
204206
end
207+
|> Enum.unzip()
205208

206-
filter_defaults(nodes)
209+
{filter_defaults(nodes), groups}
207210
end
208211

209212
defp get_doc(doc, doc_data, module_data, source, group_for_doc, annotations_for_docs) do
@@ -232,7 +235,7 @@ defmodule ExDoc.Retriever do
232235

233236
group = normalize_group(group_for_doc.(metadata) || doc_data.default_group)
234237

235-
%ExDoc.DocNode{
238+
doc_node = %ExDoc.DocNode{
236239
id: doc_data.id_key <> nil_or_name(name, arity),
237240
name: name,
238241
arity: arity,
@@ -246,9 +249,11 @@ defmodule ExDoc.Retriever do
246249
specs: doc_data.specs,
247250
source_url: source_url,
248251
type: doc_data.type,
249-
group: group,
252+
group: group.title,
250253
annotations: annotations
251254
}
255+
256+
{doc_node, group}
252257
end
253258

254259
defp get_defaults(_name, _arity, 0), do: []
@@ -269,11 +274,10 @@ defmodule ExDoc.Retriever do
269274
end)
270275
end
271276

272-
defp get_docs_groups(module_groups, doc_nodes) do
277+
defp get_docs_groups(module_groups, nodes_groups) do
273278
module_groups = Enum.map(module_groups, &normalize_group/1)
274279

275280
# Doc nodes already have normalized groups
276-
nodes_groups = Enum.map(doc_nodes, & &1.group)
277281
nodes_groups_descriptions = Map.new(nodes_groups, &{&1.title, &1.description})
278282

279283
normal_groups = module_groups ++ nodes_groups

0 commit comments

Comments
 (0)