File 0265-stdlib-Fix-em-and-add-strong-and-b-to-erlang-doc-chu.patch of Package erlang

From b5f2ff80660a1346e2529955444594ee46d60f1d Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Wed, 20 Jan 2021 17:36:07 +0100
Subject: [PATCH 5/7] stdlib: Fix em and add strong and b to erlang doc chunks

---
 lib/erl_docgen/doc/src/doc_storage.xml     |  2 +-
 lib/erl_docgen/src/docgen_xml_to_chunk.erl |  4 +---
 lib/stdlib/src/shell_docs.erl              | 22 ++++++++++++++--------
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/lib/erl_docgen/doc/src/doc_storage.xml b/lib/erl_docgen/doc/src/doc_storage.xml
index c397c73eef..7383f64405 100644
--- a/lib/erl_docgen/doc/src/doc_storage.xml
+++ b/lib/erl_docgen/doc/src/doc_storage.xml
@@ -59,7 +59,7 @@
 -type chunk_element_attrs() :: [chunk_element_attr()].
 -type chunk_element_attr() :: {atom(),unicode:unicode_binary()}.
 -type chunk_element_type() :: chunk_element_inline_type() | chunk_element_block_type().
--type chunk_element_inline_type() :: a | code |  em | i.
+-type chunk_element_inline_type() :: a | code | strong | b | em | i.
 -type chunk_element_block_type() :: p | 'div' | br | pre | ul |
                                     ol | li | dl | dt | dd |
                                     h1 | h2 | h3 | h4 | h5 | h6.
diff --git a/lib/erl_docgen/src/docgen_xml_to_chunk.erl b/lib/erl_docgen/src/docgen_xml_to_chunk.erl
index 478248411c..a4bfbe419d 100644
--- a/lib/erl_docgen/src/docgen_xml_to_chunk.erl
+++ b/lib/erl_docgen/src/docgen_xml_to_chunk.erl
@@ -228,7 +228,7 @@ build_dom({ignorableWhitespace, String},
           #state{dom=[{Name,_,_} = _E|_]} = State) ->
     case lists:member(Name,
                       [p,pre,input,code,quote,warning,
-                       note,dont,do,c,i,em,strong,
+                       note,dont,do,c,b,i,em,strong,
                        seemfa,seeerl,seetype,seeapp,
                        seecom,seecref,seefile,seeguide,
                        tag,item]) of
@@ -354,8 +354,6 @@ transform([{datatype_title,_Attr,_Content}|T],Acc) ->
 %% transform <desc>Content</desc> to Content
 transform([{desc,_Attr,Content}|T],Acc) ->
     transform(T,[transform(Content,[])|Acc]);
-transform([{strong,Attr,Content}|T],Acc) ->
-    transform([{em,Attr,Content}|T],Acc);
 %% transform <marker id="name"/>  to <a id="name"/>....
 transform([{marker,Attrs,Content}|T],Acc) ->
     transform(T,[{a,a2b(Attrs),transform(Content,[])}|Acc]);
diff --git a/lib/stdlib/src/shell_docs.erl b/lib/stdlib/src/shell_docs.erl
index 9566f7c6a7..28b490e7db 100644
--- a/lib/stdlib/src/shell_docs.erl
+++ b/lib/stdlib/src/shell_docs.erl
@@ -49,11 +49,13 @@
                   columns
                 }).
 
--define(ALL_ELEMENTS,[a,p,'div',br,h1,h2,h3,h4,h5,h6,i,em,pre,code,ul,ol,li,dl,dt,dd]).
+-define(ALL_ELEMENTS,[a,p,'div',br,h1,h2,h3,h4,h5,h6,
+                      i,b,em,strong,pre,code,ul,ol,li,dl,dt,dd]).
 %% inline elements are:
--define(INLINE,[i,em,code,a]).
+-define(INLINE,[i,b,em,strong,code,a]).
 -define(IS_INLINE(ELEM),(((ELEM) =:= a) orelse ((ELEM) =:= code)
-                         orelse ((ELEM) =:= i) orelse ((ELEM) =:= em))).
+                         orelse ((ELEM) =:= i) orelse ((ELEM) =:= em)
+                         orelse ((ELEM) =:= b) orelse ((ELEM) =:= strong))).
 %% non-inline elements are:
 -define(BLOCK,[p,'div',pre,br,ul,ol,li,dl,dt,dd,h1,h2,h3,h4,h5,h6]).
 -define(IS_BLOCK(ELEM),not ?IS_INLINE(ELEM)).
@@ -71,7 +73,7 @@
 -type chunk_element_attrs() :: [chunk_element_attr()].
 -type chunk_element_attr() :: {atom(),unicode:chardata()}.
 -type chunk_element_type() :: chunk_element_inline_type() | chunk_element_block_type().
--type chunk_element_inline_type() :: a | code |  em | i.
+-type chunk_element_inline_type() :: a | code | em | strong | i | b.
 -type chunk_element_block_type() :: p | 'div' | br | pre | ul |
                                     ol | li | dl | dt | dd |
                                     h1 | h2 | h3 | h4 | h5 | h6.
@@ -618,7 +620,7 @@ render_signature({{_Type,_F,_A},_Anno,_Sigs,_Docs,#{ signature := Specs } = Meta
               BinSpec =
                   unicode:characters_to_binary(
                     string:trim(Spec, trailing, "\n")),
-              [{pre,[],[{em,[],BinSpec}]}|render_meta(Meta)]
+              [{pre,[],[{strong,[],BinSpec}]}|render_meta(Meta)]
       end, Specs);
 render_signature({{_Type,_F,_A},_Anno,Sigs,_Docs,Meta}) ->
     lists:flatmap(
@@ -755,9 +757,9 @@ render_element({IgnoreMe,_,Content}, State, Pos, Ind,D)
 
 %% Catch h* before the padding is done as they reset padding
 render_element({h1,_,Content},State,0 = Pos,_Ind,D) ->
-    trimnlnl(render_element({code,[],[{em,[],Content}]}, State, Pos, 0, D));
+    trimnlnl(render_element({code,[],[{strong,[],Content}]}, State, Pos, 0, D));
 render_element({h2,_,Content},State,0 = Pos,_Ind,D) ->
-    trimnlnl(render_element({em,[],Content}, State, Pos, 0, D));
+    trimnlnl(render_element({strong,[],Content}, State, Pos, 0, D));
 render_element({H,_,Content},State,Pos,_Ind,D)
   when Pos =< 2, H =:= h3 orelse H =:= h4 orelse H =:= h5 orelse H =:= h6 ->
     trimnlnl(render_element({code,[],Content}, State, Pos, 2, D));
@@ -787,6 +789,8 @@ render_element({code,_,Content},State,Pos,Ind,D) ->
     {Docs, NewPos} = render_docs(Content, [code|State], Pos, Ind,D),
     {[Underline,Docs,ransi(underline)], NewPos};
 
+render_element({em,Attr,Content},State,Pos,Ind,D) ->
+    render_element({i,Attr,Content},State,Pos,Ind,D);
 render_element({i,_,Content},State,Pos,Ind,D) ->
     %% Just ignore i as ansi does not have cursive style
     render_docs(Content, State, Pos, Ind,D);
@@ -794,7 +798,9 @@ render_element({i,_,Content},State,Pos,Ind,D) ->
 render_element({br,[],[]},_State,Pos,_Ind,_D) ->
     {"",Pos};
 
-render_element({em,_,Content},State,Pos,Ind,D) ->
+render_element({strong,Attr,Content},State,Pos,Ind,D) ->
+    render_element({b,Attr,Content},State,Pos,Ind,D);
+render_element({b,_,Content},State,Pos,Ind,D) ->
     Bold = sansi(bold),
     {Docs, NewPos} = render_docs(Content, State, Pos, Ind,D),
     {[Bold,Docs,ransi(bold)], NewPos};
-- 
2.26.2

openSUSE Build Service is sponsored by