Skip to content

Commit 5887fb1

Browse files
committed
Make language-specific private data explicit
1 parent 1671d05 commit 5887fb1

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

lib/ex_doc/language.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ defmodule ExDoc.Language do
2424
2525
* `:callback_types` - a list of types that are considered callbacks
2626
27-
* `:nesting_info` - A `{nested_title, nested_context}` tuple or `nil`.
27+
* `:nesting_info` - a `{nested_title, nested_context}` tuple or `nil`.
2828
For example, `"A.B.C"` becomes `{"C", "A.B"}`.
29+
30+
* `:private` - a map with language-specific data
2931
"""
3032
@type module_data() :: %{
3133
module: module(),
@@ -37,7 +39,8 @@ defmodule ExDoc.Language do
3739
skip: boolean(),
3840
line: non_neg_integer(),
3941
callback_types: [atom()],
40-
nesting_info: {String.t(), String.t()} | nil
42+
nesting_info: {String.t(), String.t()} | nil,
43+
private: map()
4144
}
4245

4346
@doc """

lib/ex_doc/language/elixir.ex

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ defmodule ExDoc.Language.Elixir do
2424
title: title,
2525
type: type,
2626
skip: skip,
27+
line: line,
2728
callback_types: [:callback, :macrocallback],
2829
nesting_info: nesting_info(title, config.nest_modules_by_prefix),
29-
line: line,
30-
abst_code: abst_code,
31-
specs: Erlang.get_specs(module),
32-
callbacks: Erlang.get_callbacks(module),
33-
impls: get_impls(module)
30+
private: %{
31+
abst_code: abst_code,
32+
specs: Erlang.get_specs(module),
33+
callbacks: Erlang.get_callbacks(module),
34+
impls: get_impls(module)
35+
}
3436
}
3537
end
3638

@@ -49,7 +51,7 @@ defmodule ExDoc.Language.Elixir do
4951

5052
%{
5153
doc_fallback: fn ->
52-
impl = Map.fetch(module_data.impls, actual_def)
54+
impl = Map.fetch(module_data.private.impls, actual_def)
5355

5456
callback_doc_ast(name, arity, impl) ||
5557
delegate_doc_ast(metadata[:delegate_to])
@@ -66,7 +68,7 @@ defmodule ExDoc.Language.Elixir do
6668
actual_def = actual_def(name, arity, kind)
6769

6870
specs =
69-
case Map.fetch(module_data.callbacks, actual_def) do
71+
case Map.fetch(module_data.private.callbacks, actual_def) do
7072
{:ok, specs} ->
7173
specs
7274

@@ -111,7 +113,7 @@ defmodule ExDoc.Language.Elixir do
111113

112114
@doc false
113115
def type_from_module_data(module_data, name, arity) do
114-
Enum.find_value(module_data.abst_code, fn
116+
Enum.find_value(module_data.private.abst_code, fn
115117
{:attribute, anno, type, {^name, _, args} = spec} ->
116118
if type in [:opaque, :type] and length(args) == arity do
117119
%{
@@ -218,7 +220,7 @@ defmodule ExDoc.Language.Elixir do
218220

219221
defp specs(kind, name, actual_def, module_data) do
220222
specs =
221-
module_data.specs
223+
module_data.private.specs
222224
|> Map.get(actual_def, [])
223225
|> Enum.map(&Code.Typespec.spec_to_quoted(name, &1))
224226

@@ -273,8 +275,8 @@ defmodule ExDoc.Language.Elixir do
273275
nil
274276
end
275277

276-
defp find_function_line(%{abst_code: abst_code}, {name, arity}) do
277-
Enum.find_value(abst_code, fn
278+
defp find_function_line(module_data, {name, arity}) do
279+
Enum.find_value(module_data.private.abst_code, fn
278280
{:function, anno, ^name, ^arity, _} -> anno_line(anno)
279281
_ -> nil
280282
end)

lib/ex_doc/language/erlang.ex

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ defmodule ExDoc.Language.Erlang do
1919
title: id,
2020
type: module_type(module),
2121
skip: false,
22+
line: line,
2223
callback_types: [:callback],
2324
nesting_info: nil,
24-
line: line,
25-
abst_code: abst_code,
26-
specs: get_specs(module),
27-
callbacks: get_callbacks(module)
25+
private: %{
26+
abst_code: abst_code,
27+
specs: get_specs(module),
28+
callbacks: get_callbacks(module)
29+
}
2830
}
2931
end
3032

@@ -33,7 +35,7 @@ defmodule ExDoc.Language.Erlang do
3335
{{_kind, name, arity}, _anno, _signature, _doc_content, _metadata} = entry
3436

3537
specs =
36-
case Map.fetch(module_data.specs, {name, arity}) do
38+
case Map.fetch(module_data.private.specs, {name, arity}) do
3739
{:ok, specs} ->
3840
[{:attribute, 0, :spec, {{name, arity}, specs}}]
3941

@@ -54,7 +56,7 @@ defmodule ExDoc.Language.Erlang do
5456
{{_kind, name, arity}, anno, signature, _doc, _metadata} = entry
5557

5658
specs =
57-
case Map.fetch(module_data.callbacks, {name, arity}) do
59+
case Map.fetch(module_data.private.callbacks, {name, arity}) do
5860
{:ok, specs} ->
5961
[{:attribute, 0, :callback, {{name, arity}, specs}}]
6062

0 commit comments

Comments
 (0)