Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
0797-stdlib-Fix-shell_docs-to-properly-render-m...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0797-stdlib-Fix-shell_docs-to-properly-render-multiclause.patch of Package erlang
From d6eb7aca9921a7b26a7cc16fc635e36503c0c782 Mon Sep 17 00:00:00 2001 From: Lukas Larsson <lukas@erlang.org> Date: Mon, 17 Jul 2023 08:42:26 +0200 Subject: [PATCH 1/2] stdlib: Fix shell_docs to properly render multiclause docs When rendering shell docs with multiple clauses (for example erlang:halt/1 and erlang:system_info/1), shell_docs rendered the signature for all but failed to render the docs. --- lib/stdlib/src/shell_docs.erl | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/stdlib/src/shell_docs.erl b/lib/stdlib/src/shell_docs.erl index 5cf1e0aed2..8c743e20c2 100644 --- a/lib/stdlib/src/shell_docs.erl +++ b/lib/stdlib/src/shell_docs.erl @@ -595,13 +595,18 @@ render_function(FDocs, D, Config) when is_map(Config) -> render_function(FDocs, #docs_v1{ docs = Docs } = D, Config) -> Grouping = lists:foldl( - fun({_Group,_Anno,_Sig,_Doc,#{ equiv := Group }} = Func,Acc) -> - Members = maps:get(Group, Acc, []), - Acc#{ Group => [Func|Members] }; + fun({_Group,_Anno,_Sig,_Doc,#{ equiv := Group }} = Func, Acc) -> + case lists:keytake(Group, 1, Acc) of + false -> [{Group, [Func]} | Acc]; + {value, {Group, Members}, NewAcc} -> + [{Group,[Func|Members]} | NewAcc] + end; ({Group, _Anno, _Sig, _Doc, _Meta} = Func, Acc) -> - Members = maps:get(Group, Acc, []), - Acc#{ Group => [Func|Members] } - end, #{}, lists:sort(FDocs)), + [{Group, [Func]} | Acc] + end, [], + %% We sort only on the group element, so that multiple entries with + %% the same group do not change order. For example erlang:halt/1. + lists:sort(fun(A, B) -> element(1, A) =< element(1, B) end, FDocs)), lists:map( fun({Group,Members}) -> Signatures = lists:flatmap(fun render_signature/1, lists:reverse(Members)), @@ -621,7 +626,7 @@ render_function(FDocs, #docs_v1{ docs = Docs } = D, Config) -> Signatures, get_local_doc(Group, Doc, D), D, Config) end end - end, maps:to_list(Grouping)). + end, lists:reverse(Grouping)). %% Render the signature of either function, type, or anything else really. render_signature({{_Type,_F,_A},_Anno,_Sigs,_Docs,#{ signature := Specs } = Meta}) -> -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor