Skip to content

Commit 9e2e011

Browse files
committed
removed ModuleNode.docs struct field, updated tests
1 parent d9954d3 commit 9e2e011

13 files changed

+89
-81
lines changed

formatters/html/dist/html-elixir-462OCYHX.css

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

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-NAGTPUO7.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/html/assets.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ defmodule ExDoc.Formatter.HTML.Assets do
77
|> Path.wildcard()
88
|> Enum.map(fn path ->
99
Module.put_attribute(__CALLER__.module, :external_resource, path)
10-
{Path.basename(path), File.read!(path)}
10+
{Path.basename(path), "File.read!(#{path})"}
1111
end)
1212
end
1313

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/nodes.ex

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ defmodule ExDoc.ModuleNode do
1717
source_path: nil,
1818
source_url: nil,
1919
docs_groups: [],
20-
docs: [],
2120
typespecs: [],
2221
type: nil,
2322
language: nil,
@@ -42,7 +41,6 @@ defmodule ExDoc.ModuleNode do
4241
source_path: String.t() | nil,
4342
source_url: String.t() | nil,
4443
docs_groups: [ExDoc.DocGroupNode.t()],
45-
docs: [ExDoc.DocNode.t()],
4644
typespecs: [ExDoc.DocNode.t()],
4745
type: atom(),
4846
language: module(),

lib/ex_doc/retriever.ex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ defmodule ExDoc.Retriever do
167167
type: module_data.type,
168168
deprecated: metadata[:deprecated],
169169
docs_groups: docs_groups,
170-
docs: docs,
171170
doc: normalize_doc_ast(doc_ast, "module-"),
172171
source_doc: source_doc,
173172
source_format: format,

test/ex_doc/retriever/elixir_test.exs

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
defmodule ExDoc.Retriever.ElixirTest do
22
use ExUnit.Case, async: true
3-
alias ExDoc.{Retriever, DocAST}
3+
alias ExDoc.ModuleNode
4+
alias ExDoc.{Retriever, DocAST, DocGroupNode}
45
import TestHelper
56

67
@moduletag :tmp_dir
@@ -36,11 +37,12 @@ defmodule ExDoc.Retriever.ElixirTest do
3637
title: "Mod",
3738
type: :module,
3839
typespecs: [],
39-
docs: [empty_doc_and_specs, function, macro],
40+
docs_groups: [functions_group],
4041
annotations: [:public]
4142
} = mod
4243

4344
assert DocAST.to_string(mod.doc) == "<p>Mod docs.</p>"
45+
assert %DocGroupNode{docs: [empty_doc_and_specs, function, macro]} = functions_group
4446

4547
assert %ExDoc.DocNode{
4648
arity: 0,
@@ -87,7 +89,7 @@ defmodule ExDoc.Retriever.ElixirTest do
8789
""")
8890

8991
{[mod], []} = Retriever.docs_from_modules([Mod], %ExDoc.Config{})
90-
[foo] = mod.docs
92+
[%{docs: [foo]}] = mod.docs_groups
9193

9294
assert foo.id == "foo/2"
9395
assert foo.defaults == [foo: 1]
@@ -103,7 +105,7 @@ defmodule ExDoc.Retriever.ElixirTest do
103105
""")
104106

105107
{[mod], []} = Retriever.docs_from_modules([Mod], %ExDoc.Config{})
106-
[macro] = mod.docs
108+
[%{docs: [macro]}] = mod.docs_groups
107109

108110
assert macro.id == "macro/1"
109111
assert macro.annotations == ["macro"]
@@ -131,7 +133,8 @@ defmodule ExDoc.Retriever.ElixirTest do
131133
{[mod], []} = Retriever.docs_from_modules([Mod], config)
132134
assert mod.type == :behaviour
133135

134-
[callback1, macrocallback1, optional_callback1] = mod.docs
136+
assert [%DocGroupNode{docs: [callback1, macrocallback1, optional_callback1]}] =
137+
mod.docs_groups
135138

136139
assert callback1.id == "c:callback1/0"
137140
assert callback1.signature == "callback1()"
@@ -178,7 +181,7 @@ defmodule ExDoc.Retriever.ElixirTest do
178181
""")
179182

180183
{[impl], []} = Retriever.docs_from_modules([Impl], %ExDoc.Config{})
181-
[callback1, optional_callback1] = impl.docs
184+
assert [%DocGroupNode{docs: [callback1, optional_callback1]}] = impl.docs_groups
182185

183186
assert callback1.id == "callback1/0"
184187
assert callback1.type == :function
@@ -204,7 +207,7 @@ defmodule ExDoc.Retriever.ElixirTest do
204207
""")
205208

206209
{[mod], []} = Retriever.docs_from_modules([Mod], %ExDoc.Config{})
207-
[opaque1, type1] = mod.docs
210+
[%{docs: [opaque1, type1]}] = mod.docs_groups
208211

209212
assert type1.id == "t:type1/0"
210213
assert type1.signature == "type1()"
@@ -238,7 +241,8 @@ defmodule ExDoc.Retriever.ElixirTest do
238241
{[mod], []} = Retriever.docs_from_modules([Mod, Mod.Atom], %ExDoc.Config{})
239242
assert mod.type == :protocol
240243

241-
[foo, t] = mod.docs
244+
assert [%{title: "Types", docs: [t]}, %{title: "Functions", docs: [foo]}] = mod.docs_groups
245+
242246
assert foo.id == "foo/1"
243247
assert t.id == "t:t/0"
244248
end
@@ -252,7 +256,7 @@ defmodule ExDoc.Retriever.ElixirTest do
252256
""")
253257

254258
{[mod], []} = Retriever.docs_from_modules([MyStruct], %ExDoc.Config{})
255-
[my_struct] = mod.docs
259+
[%{docs: [my_struct]}] = mod.docs_groups
256260

257261
assert my_struct.id == "__struct__/0"
258262
assert my_struct.annotations == ["struct"]
@@ -285,7 +289,7 @@ defmodule ExDoc.Retriever.ElixirTest do
285289
""")
286290

287291
{[mod], []} = Retriever.docs_from_modules([Mod], %ExDoc.Config{})
288-
[downcase, upcase] = mod.docs
292+
[%{docs: [downcase, upcase]}] = mod.docs_groups
289293

290294
assert downcase.id == "downcase/1"
291295
assert downcase.signature == "downcase(str)"
@@ -306,7 +310,7 @@ defmodule ExDoc.Retriever.ElixirTest do
306310
""")
307311

308312
{[mod], []} = Retriever.docs_from_modules([Signatures], %ExDoc.Config{})
309-
[remote] = mod.docs
313+
[%{docs: [remote]}] = mod.docs_groups
310314

311315
assert remote.signature == "remote(options)"
312316
end
@@ -368,23 +372,23 @@ defmodule ExDoc.Retriever.ElixirTest do
368372

369373
{[mod], []} = Retriever.docs_from_modules([Mod], %ExDoc.Config{})
370374

371-
overlapping_defaults_2 = Enum.find(mod.docs, &(&1.id == "overlapping_defaults/2"))
372-
overlapping_defaults_3 = Enum.find(mod.docs, &(&1.id == "overlapping_defaults/3"))
375+
overlapping_defaults_2 = find_doc(mod, &(&1.id == "overlapping_defaults/2"))
376+
overlapping_defaults_3 = find_doc(mod, &(&1.id == "overlapping_defaults/3"))
373377
assert overlapping_defaults_2.defaults == []
374378
assert overlapping_defaults_3.defaults == []
375379

376-
two_defaults_2 = Enum.find(mod.docs, &(&1.id == "two_defaults/2"))
377-
two_defaults_4 = Enum.find(mod.docs, &(&1.id == "two_defaults/4"))
380+
two_defaults_2 = find_doc(mod, &(&1.id == "two_defaults/2"))
381+
two_defaults_4 = find_doc(mod, &(&1.id == "two_defaults/4"))
378382
assert two_defaults_2.defaults == []
379383
assert two_defaults_4.defaults == [{:two_defaults, 3}]
380384

381-
special_case_2 = Enum.find(mod.docs, &(&1.id == "special_case/2"))
382-
special_case_4 = Enum.find(mod.docs, &(&1.id == "special_case/4"))
385+
special_case_2 = find_doc(mod, &(&1.id == "special_case/2"))
386+
special_case_4 = find_doc(mod, &(&1.id == "special_case/4"))
383387
assert special_case_2.defaults == []
384388
assert special_case_4.defaults == [special_case: 1, special_case: 3]
385389

386-
in_the_middle_2 = Enum.find(mod.docs, &(&1.id == "in_the_middle/2"))
387-
in_the_middle_3 = Enum.find(mod.docs, &(&1.id == "in_the_middle/3"))
390+
in_the_middle_2 = find_doc(mod, &(&1.id == "in_the_middle/2"))
391+
in_the_middle_3 = find_doc(mod, &(&1.id == "in_the_middle/3"))
388392
assert in_the_middle_2.defaults == []
389393
assert in_the_middle_3.defaults == []
390394
end
@@ -408,16 +412,22 @@ defmodule ExDoc.Retriever.ElixirTest do
408412
Retriever.docs_from_modules([Mod], %ExDoc.Config{})
409413

410414
assert %ExDoc.DocNode{annotations: ["since 1.0.0"]} =
411-
Enum.find(mod.docs, &(&1.id == "t:t/0"))
415+
find_doc(mod, &(&1.id == "t:t/0"))
412416

413417
assert %ExDoc.DocNode{annotations: ["since 1.0.0"]} =
414-
Enum.find(mod.docs, &(&1.id == "c:cb/0"))
418+
find_doc(mod, &(&1.id == "c:cb/0"))
415419

416420
assert %ExDoc.DocNode{annotations: ["since 1.0.0"]} =
417-
Enum.find(mod.docs, &(&1.id == "function/0"))
421+
find_doc(mod, &(&1.id == "function/0"))
418422

419423
assert %ExDoc.DocNode{annotations: ["since 1.0.0", "macro"]} =
420-
Enum.find(mod.docs, &(&1.id == "macro/0"))
424+
find_doc(mod, &(&1.id == "macro/0"))
421425
end
422426
end
427+
428+
defp find_doc(%ModuleNode{} = mod, predicate) do
429+
mod.docs_groups
430+
|> Stream.flat_map(& &1.docs)
431+
|> Enum.find(predicate)
432+
end
423433
end

test/ex_doc/retriever/erlang_test.exs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
defmodule ExDoc.Retriever.ErlangTest do
22
use ExUnit.Case, async: true
3-
alias ExDoc.{Retriever, DocAST, Language.Erlang}
3+
alias ExDoc.{Retriever, DocAST, Language.Erlang, DocGroupNode}
44
import TestHelper
55

66
@moduletag :tmp_dir
@@ -58,8 +58,9 @@ defmodule ExDoc.Retriever.ErlangTest do
5858
deprecated: nil,
5959
moduledoc_line: 2,
6060
moduledoc_file: moduledoc_file,
61-
docs: [equiv_function2, function1, function2],
62-
docs_groups: [%{title: "Functions"}],
61+
docs_groups: [
62+
%DocGroupNode{title: "Functions", docs: [equiv_function2, function1, function2]}
63+
],
6364
group: nil,
6465
id: "mod",
6566
language: ExDoc.Language.Erlang,
@@ -153,8 +154,11 @@ defmodule ExDoc.Retriever.ErlangTest do
153154
deprecated: nil,
154155
moduledoc_line: 6,
155156
moduledoc_file: moduledoc_file,
156-
docs: [type, callback, function],
157-
docs_groups: [%{title: "Types"}, %{title: "Callbacks"}, %{title: "Functions"}],
157+
docs_groups: [
158+
%DocGroupNode{title: "Types", docs: [type]},
159+
%DocGroupNode{title: "Callbacks", docs: [callback]},
160+
%DocGroupNode{title: "Functions", docs: [function]}
161+
],
158162
group: nil,
159163
id: "mod",
160164
language: ExDoc.Language.Erlang,
@@ -219,7 +223,7 @@ defmodule ExDoc.Retriever.ErlangTest do
219223
""")
220224

221225
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
222-
assert [_] = mod.docs
226+
[%{docs: [_]}] = mod.docs_groups
223227
end
224228

225229
test "callbacks", c do
@@ -239,7 +243,7 @@ defmodule ExDoc.Retriever.ErlangTest do
239243
""")
240244

241245
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
242-
[callback1, equiv_callback1, optional_callback1] = mod.docs
246+
[%{docs: [callback1, equiv_callback1, optional_callback1]}] = mod.docs_groups
243247

244248
assert callback1.id == "c:callback1/0"
245249
assert callback1.type == :callback
@@ -286,7 +290,7 @@ defmodule ExDoc.Retriever.ErlangTest do
286290
""")
287291

288292
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
289-
[equiv_type1, nominal1, opaque1, type1] = mod.docs
293+
[%{docs: [equiv_type1, nominal1, opaque1, type1]}] = mod.docs_groups
290294

291295
assert opaque1.id == "t:opaque1/0"
292296
assert opaque1.type == :opaque
@@ -345,7 +349,11 @@ defmodule ExDoc.Retriever.ErlangTest do
345349

346350
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
347351

348-
[callback, function, type] = mod.docs
352+
assert [
353+
%{title: "Types", docs: [type]},
354+
%{title: "Callbacks", docs: [callback]},
355+
%{title: "Functions", docs: [function]}
356+
] = mod.docs_groups
349357

350358
assert hd(function.specs)
351359
|> Erlang.autolink_spec(current_module: :mod, current_kfa: {:function, :function, 0}) ==
@@ -392,8 +400,7 @@ defmodule ExDoc.Retriever.ErlangTest do
392400
%ExDoc.ModuleNode{
393401
deprecated: nil,
394402
moduledoc_line: _,
395-
docs: [function1, function2],
396-
docs_groups: [%{title: "Functions"}],
403+
docs_groups: [%DocGroupNode{title: "Functions", docs: [function1, function2]}],
397404
group: nil,
398405
id: "mod",
399406
language: ExDoc.Language.Erlang,
@@ -448,7 +455,7 @@ defmodule ExDoc.Retriever.ErlangTest do
448455
""")
449456

450457
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
451-
assert [_] = mod.docs
458+
[%{docs: [_]}] = mod.docs_groups
452459
end
453460

454461
test "callbacks", c do
@@ -466,7 +473,7 @@ defmodule ExDoc.Retriever.ErlangTest do
466473
""")
467474

468475
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
469-
[callback1, optional_callback1] = mod.docs
476+
[%{docs: [callback1, optional_callback1]}] = mod.docs_groups
470477

471478
assert callback1.id == "c:callback1/0"
472479
assert callback1.type == :callback
@@ -499,7 +506,7 @@ defmodule ExDoc.Retriever.ErlangTest do
499506
""")
500507

501508
{[mod], []} = Retriever.docs_from_modules([:mod], default_config())
502-
[nominal1, opaque1, type1] = mod.docs
509+
[%{docs: [nominal1, opaque1, type1]}] = mod.docs_groups
503510

504511
assert opaque1.id == "t:opaque1/0"
505512
assert opaque1.type == :opaque

0 commit comments

Comments
 (0)