File 0264-edoc_layout_chunks-Add-source-file-to-the-warning-on.patch of Package erlang
From 99af46e1a67fc56ae90179a4c8f3ca0123183864 Mon Sep 17 00:00:00 2001
From: Wojtek Mach <wojtek@wojtekmach.pl>
Date: Sun, 4 Jul 2021 01:00:37 +0200
Subject: [PATCH] edoc_layout_chunks: Add source file to the warning on skipped
tag
Before this patch:
edoc: warning: 'blockquote' is not allowed - skipping tag, extracting content
After:
telemetry_poller.erl: warning: 'blockquote' is not allowed - skipping tag, extracting content
---
lib/edoc/src/edoc_layout_chunks.erl | 66 ++++++++++++++---------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/lib/edoc/src/edoc_layout_chunks.erl b/lib/edoc/src/edoc_layout_chunks.erl
index 570511c754..927b85bf07 100644
--- a/lib/edoc/src/edoc_layout_chunks.erl
+++ b/lib/edoc/src/edoc_layout_chunks.erl
@@ -155,9 +155,9 @@ doc_visibility(_XPath, Doc, Opts) ->
end.
doc_contents_(_XPath, Doc, Opts) ->
- Equiv = xpath_to_chunk("./equiv", Doc),
- Desc = xpath_to_chunk("./description/fullDescription", Doc),
- See = xpath_to_chunk("./see", Doc),
+ Equiv = xpath_to_chunk("./equiv", Doc, Opts),
+ Desc = xpath_to_chunk("./description/fullDescription", Doc, Opts),
+ See = xpath_to_chunk("./see", Doc, Opts),
doc_content(Equiv ++ Desc ++ See, Opts).
meta_deprecated(Doc, Opts) ->
@@ -226,7 +226,7 @@ callback(Cb = #tag{name = callback, origin = code}, Opts) ->
form = Form} = Cb,
EntryDoc = case MaybeDoc of
none -> none;
- _ -> doc_content([xmerl_to_binary(MaybeDoc)], Opts)
+ _ -> doc_content([xmerl_to_binary(MaybeDoc, Opts)], Opts)
end,
{source, File} = lists:keyfind(source, 1, Opts),
Anno = erl_anno:set_file(File, erl_anno:new(Line)),
@@ -477,13 +477,13 @@ xpath_to_text(XPath, Doc, Opts) ->
{_ , Value} = format_attribute(Attr),
hd(shell_docs:normalize([Value]));
[#xmlElement{}] = Elements ->
- xmerl_to_binary(Elements);
+ xmerl_to_binary(Elements, Opts);
[_|_] ->
erlang:error(multiple_nodes, [XPath, Doc, Opts])
end.
-xmerl_to_binary(XML) ->
- iolist_to_binary(chunk_to_text(xmerl_to_chunk(XML))).
+xmerl_to_binary(XML, Opts) ->
+ iolist_to_binary(chunk_to_text(xmerl_to_chunk(XML, Opts))).
chunk_to_text([]) -> [];
chunk_to_text([Node | Nodes]) ->
@@ -498,53 +498,53 @@ xpath_to_atom(XPath, Doc, Opts) ->
xpath_to_integer(XPath, Doc, Opts) ->
binary_to_integer(xpath_to_text(XPath, Doc, Opts)).
-xpath_to_chunk(XPath, Doc) ->
+xpath_to_chunk(XPath, Doc, Opts) ->
XmerlDoc = xmerl_xpath:string(XPath, Doc),
- xmerl_to_chunk(XmerlDoc).
+ xmerl_to_chunk(XmerlDoc, Opts).
%%.
%%' Xmerl to chunk format
%%
--spec xmerl_to_chunk([xmerl_doc_node()]) -> shell_docs:chunk_elements().
-xmerl_to_chunk(Contents) ->
- shell_docs:normalize(format_content(Contents)).
+-spec xmerl_to_chunk([xmerl_doc_node()], proplists:proplist()) -> shell_docs:chunk_elements().
+xmerl_to_chunk(Contents, Opts) ->
+ shell_docs:normalize(format_content(Contents, Opts)).
--spec format_content([xmerl_doc_node()]) -> shell_docs:chunk_elements().
-format_content(Contents) ->
+-spec format_content([xmerl_doc_node()], proplists:proplist()) -> shell_docs:chunk_elements().
+format_content(Contents, Opts) ->
{SeeTags, OtherTags} = lists:partition(fun (#xmlElement{name = see}) -> true;
(_) -> false end,
Contents),
- lists:flatten([ format_content_(T) || T <- OtherTags ] ++ rewrite_see_tags(SeeTags)).
+ lists:flatten([ format_content_(T, Opts) || T <- OtherTags ] ++ rewrite_see_tags(SeeTags, Opts)).
--spec format_content_(xmerl_doc_node()) -> shell_docs:chunk_elements().
-format_content_(#xmlPI{}) -> [];
-format_content_(#xmlComment{}) -> [];
+-spec format_content_(xmerl_doc_node(), proplists:proplist()) -> shell_docs:chunk_elements().
+format_content_(#xmlPI{}, _) -> [];
+format_content_(#xmlComment{}, _) -> [];
-format_content_(#xmlText{} = T) ->
+format_content_(#xmlText{} = T, _) ->
Text = T#xmlText.value,
case edoc_lib:is_space(Text) of
true -> [];
false -> [unicode:characters_to_binary(Text)]
end;
-format_content_(#xmlElement{name = equiv} = E) ->
- format_element(rewrite_equiv_tag(E));
-format_content_(#xmlElement{name = a} = E) ->
- format_element(rewrite_a_tag(E));
-format_content_(#xmlElement{} = E) ->
- format_element(E).
+format_content_(#xmlElement{name = equiv} = E, Opts) ->
+ format_element(rewrite_equiv_tag(E), Opts);
+format_content_(#xmlElement{name = a} = E, Opts) ->
+ format_element(rewrite_a_tag(E), Opts);
+format_content_(#xmlElement{} = E, Opts) ->
+ format_element(E, Opts).
-format_element(#xmlElement{} = E) ->
+format_element(#xmlElement{} = E, Opts) ->
#xmlElement{name = Name, content = Content, attributes = Attributes} = E,
case {is_edoc_tag(Name), is_html_tag(Name)} of
{true, _} ->
- format_content(Content);
+ format_content(Content, Opts);
{_, false} ->
- edoc_report:warning("'~s' is not allowed - skipping tag, extracting content", [Name]),
- format_content(Content);
+ edoc_report:warning(0, source_file(Opts), "'~s' is not allowed - skipping tag, extracting content", [Name]),
+ format_content(Content, Opts);
_ ->
- [{Name, format_attributes(Attributes), format_content(Content)}]
+ [{Name, format_attributes(Attributes), format_content(Content, Opts)}]
end.
-spec format_attributes([xmerl_attribute()]) -> [shell_docs:chunk_element_attr()].
@@ -575,12 +575,12 @@ rewrite_a_tag(#xmlElement{name = a} = E) ->
SimpleE = xmerl_lib:simplify_element(E),
xmerl_lib:normalize_element(rewrite_docgen_link(SimpleE)).
-rewrite_see_tags([]) -> [];
-rewrite_see_tags([#xmlElement{name = see} | _] = SeeTags) ->
+rewrite_see_tags([], _Opts) -> [];
+rewrite_see_tags([#xmlElement{name = see} | _] = SeeTags, Opts) ->
Grouped = [ rewrite_see_tag(T) || T <- SeeTags ],
NewXML = {p, [], [{em,[],["See also: "]}] ++ lists:join(", ", Grouped) ++ ["."]},
%% Convert strings to binaries in the entire new tree:
- [format_content_(xmerl_lib:normalize_element(NewXML))].
+ [format_content_(xmerl_lib:normalize_element(NewXML), Opts)].
rewrite_see_tag(#xmlElement{name = see} = E) ->
%% TODO: this is not formatted nicely by shell_docs...
--
2.31.1