@@ -140,14 +140,15 @@ defmodule ExDoc.Retriever do
140
140
group_for_doc = config . group_for_doc
141
141
annotations_for_docs = config . annotations_for_docs
142
142
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 )
144
144
145
145
moduledoc_groups = Map . get ( metadata , :groups , [ ] )
146
146
147
147
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
+ )
151
152
152
153
metadata = Map . put ( metadata , :kind , module_data . type )
153
154
group = GroupMatcher . match_module ( config . groups_for_modules , module , module_data . id , metadata )
@@ -197,13 +198,15 @@ defmodule ExDoc.Retriever do
197
198
defp get_docs ( module_data , source , group_for_doc , annotations_for_docs ) do
198
199
{ :docs_v1 , _ , _ , _ , _ , _ , docs } = module_data . docs
199
200
200
- nodes =
201
+ { nodes , groups } =
201
202
for doc <- docs ,
202
203
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 )
204
206
end
207
+ |> Enum . unzip ( )
205
208
206
- filter_defaults ( nodes )
209
+ { filter_defaults ( nodes ) , groups }
207
210
end
208
211
209
212
defp get_doc ( doc , doc_data , module_data , source , group_for_doc , annotations_for_docs ) do
@@ -232,7 +235,7 @@ defmodule ExDoc.Retriever do
232
235
233
236
group = normalize_group ( group_for_doc . ( metadata ) || doc_data . default_group )
234
237
235
- % ExDoc.DocNode {
238
+ doc_node = % ExDoc.DocNode {
236
239
id: doc_data . id_key <> nil_or_name ( name , arity ) ,
237
240
name: name ,
238
241
arity: arity ,
@@ -246,9 +249,11 @@ defmodule ExDoc.Retriever do
246
249
specs: doc_data . specs ,
247
250
source_url: source_url ,
248
251
type: doc_data . type ,
249
- group: group ,
252
+ group: group . title ,
250
253
annotations: annotations
251
254
}
255
+
256
+ { doc_node , group }
252
257
end
253
258
254
259
defp get_defaults ( _name , _arity , 0 ) , do: [ ]
@@ -269,11 +274,10 @@ defmodule ExDoc.Retriever do
269
274
end )
270
275
end
271
276
272
- defp get_docs_groups ( module_groups , doc_nodes ) do
277
+ defp get_docs_groups ( module_groups , nodes_groups ) do
273
278
module_groups = Enum . map ( module_groups , & normalize_group / 1 )
274
279
275
280
# Doc nodes already have normalized groups
276
- nodes_groups = Enum . map ( doc_nodes , & & 1 . group )
277
281
nodes_groups_descriptions = Map . new ( nodes_groups , & { & 1 . title , & 1 . description } )
278
282
279
283
normal_groups = module_groups ++ nodes_groups
0 commit comments