From 366cf31a771ded1f10860be3212058d48020398d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 11 Oct 2023 03:02:59 +0000 Subject: CTAN sync 202310110302 --- macros/latex/contrib/l3kernel/l3prop.dtx | 269 +++++++++++++++++++++---------- 1 file changed, 188 insertions(+), 81 deletions(-) (limited to 'macros/latex/contrib/l3kernel/l3prop.dtx') diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 2d5fc3edcc..69cafe1cff 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -165,18 +165,28 @@ % % \begin{function}[updated = 2012-07-09] % { -% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, -% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, -% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, -% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx, -% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, -% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx, -% \prop_gput:Non, \prop_gput:Nxn, \prop_gput:NxV, \prop_gput:Noo, \prop_gput:Nxx, -% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, -% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx +% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne, +% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe, +% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve, +% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee, +% \prop_put:Nno, \prop_put:Non, \prop_put:Noo, +% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne, +% \prop_put:cno, +% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe, +% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve, +% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee, +% \prop_put:con, \prop_put:coo, +% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne, +% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe, +% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, +% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee, +% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo, +% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne, +% \prop_gput:cno, +% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe, +% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, +% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee, +% \prop_gput:con, \prop_gput:coo % } % \begin{syntax} % \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value} @@ -192,8 +202,10 @@ % % \begin{function} % { -% \prop_put_if_new:Nnn, \prop_put_if_new:cnn, -% \prop_gput_if_new:Nnn, \prop_gput_if_new:cnn +% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, +% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV, +% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, +% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV % } % \begin{syntax} % \cs{prop_put_if_new:Nnn} \meta{property list} \Arg{key} \Arg{value} @@ -250,8 +262,10 @@ % % \begin{function}[updated = 2011-08-28] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, % \prop_get:cnc % } % \begin{syntax} @@ -267,7 +281,12 @@ % \end{function} % % \begin{function}[updated = 2011-08-18] -% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN +% } % \begin{syntax} % \cs{prop_pop:NnN} \meta{property list} \Arg{key} \meta{tl var} % \end{syntax} @@ -281,7 +300,12 @@ % \end{function} % % \begin{function}[updated = 2011-08-18] -% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN +% } % \begin{syntax} % \cs{prop_gpop:NnN} \meta{property list} \Arg{key} \meta{tl var} % \end{syntax} @@ -297,8 +321,8 @@ % % \begin{function}[added = 2014-07-17, EXP] % { -% \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne, -% \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce +% \prop_item:Nn, \prop_item:NV, \prop_item:Ne, \prop_item:No, +% \prop_item:cn, \prop_item:cV, \prop_item:ce, \prop_item:co % } % \begin{syntax} % \cs{prop_item:Nn} \meta{property list} \Arg{key} @@ -343,8 +367,10 @@ % % \begin{function}[added = 2012-05-12] % { -% \prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV, -% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV +% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne, +% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce, +% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne, +% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce, % } % \begin{syntax} % \cs{prop_remove:Nn} \meta{property list} \Arg{key} @@ -378,8 +404,8 @@ % % \begin{function}[updated = 2011-09-15, EXP, pTF] % { -% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No, -% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co +% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No, +% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co % } % \begin{syntax} % \cs{prop_if_in_p:Nn} \meta{property list} \Arg{key} @@ -404,8 +430,10 @@ % % \begin{function}[updated = 2012-05-19, TF] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, % \prop_get:cnc % } % \begin{syntax} @@ -423,7 +451,12 @@ % \end{function} % % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19] -% {\prop_pop:NnN, \prop_pop:cnN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN +% } % \begin{syntax} % \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code} % \end{syntax} @@ -439,7 +472,12 @@ % \end{function} % % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19] -% {\prop_gpop:NnN, \prop_gpop:cnN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN +% } % \begin{syntax} % \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code} % \end{syntax} @@ -874,7 +912,7 @@ \cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2 { \prop_set_from_keyval:Nn \l_@@_internal_prop {#2} - \tl_const:Nx #1 { \exp_not:o \l_@@_internal_prop } + \tl_const:Ne #1 { \exp_not:o \l_@@_internal_prop } \prop_clear:N \l_@@_internal_prop } \cs_generate_variant:Nn \prop_const_from_keyval:Nn { c } @@ -959,9 +997,15 @@ % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV} +% { +% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne, +% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce +% } % \begin{macro}[tested = m3prop002] -% {\prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV} +% { +% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne, +% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce +% } % Deleting from a property starts by splitting the list. % If the key is present in the property list, the returned value is ignored. % If the key is missing, nothing happens. @@ -978,18 +1022,18 @@ { \tl_gset:Nn #1 { ##1 ##3 } } { } } -\cs_generate_variant:Nn \prop_remove:Nn { NV } -\cs_generate_variant:Nn \prop_remove:Nn { c , cV } -\cs_generate_variant:Nn \prop_gremove:Nn { NV } -\cs_generate_variant:Nn \prop_gremove:Nn { c , cV } +\cs_generate_variant:Nn \prop_remove:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \prop_gremove:Nn { NV , Ne , c , cV , ce } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[tested = m3prop002] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, \prop_get:cxN, % \prop_get:cnc % } % Getting an item from a list is very easy: after splitting, @@ -1002,15 +1046,26 @@ { \tl_set:Nn #3 {##2} } { \tl_set:Nn #3 { \q_no_value } } } -\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , No , Nx } -\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc } +\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \prop_get:NnN { No , Nx , co , cx } +\cs_generate_variant:Nn \prop_get:NnN { cnc } % \end{macrocode} % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:NoN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_pop:coN, +% } % \begin{macro}[tested = m3prop002] -% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN} +% { +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% \prop_gpop:coN, +% } % Popping a value also starts by doing the split. % If the key is present, save the value in the token list and update the % property list as when deleting. @@ -1034,10 +1089,10 @@ } { \tl_set:Nn #3 { \q_no_value } } } -\cs_generate_variant:Nn \prop_pop:NnN { No } -\cs_generate_variant:Nn \prop_pop:NnN { c , co } -\cs_generate_variant:Nn \prop_gpop:NnN { No } -\cs_generate_variant:Nn \prop_gpop:NnN { c , co } +\cs_generate_variant:Nn \prop_pop:NnN { NV , No } +\cs_generate_variant:Nn \prop_pop:NnN { c , cV , co } +\cs_generate_variant:Nn \prop_gpop:NnN { NV , No } +\cs_generate_variant:Nn \prop_gpop:NnN { c , cV , co } % \end{macrocode} % \end{macro} % \end{macro} @@ -1129,7 +1184,13 @@ % \end{macro} % % \begin{macro}[TF, tested = m3prop004] -% {\prop_pop:NnN, \prop_pop:cnN, \prop_gpop:NnN, \prop_gpop:cnN} +% { +% \prop_pop:NnN, \prop_pop:NVN, +% \prop_pop:cnN, \prop_pop:cVN, +% \prop_gpop:NnN, \prop_gpop:NVN, +% \prop_gpop:NoN, +% \prop_gpop:cnN, \prop_gpop:cVN, +% } % Popping an item from a property list, keeping track of whether % the key was present or not, is implemented as a conditional. % If the key was missing, neither the property list, nor the token @@ -1156,28 +1217,40 @@ } { \prg_return_false: } } -\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF } -\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_pop:NnN { NV , c , cV } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { NV , c , cV } { T , F , TF } % \end{macrocode} % \end{macro} % % \begin{macro}[tested = m3prop002] % { -% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx, -% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx, -% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx, -% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx, -% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx, -% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx +% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne, +% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe, +% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve, +% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee, +% \prop_put:Nno, \prop_put:Nnx, \prop_put:NVx, +% \prop_put:Non, \prop_put:Noo, \prop_put:NxV, \prop_put:Nxx, +% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne, +% \prop_put:cno, \prop_put:cnx, +% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe, +% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve, +% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee, +% \prop_put:con, \prop_put:coo, \prop_put:cxV, \prop_put:cxx % } % \begin{macro}[tested = m3prop002] % { -% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx, -% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_hput:Nvx, -% \prop_gput:Non, \prop_gput:Nxn, \prop_pgut:NxV, \prop_gput:Noo, \prop_gput:Nxx, -% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx, -% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx, -% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx +% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne, +% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe, +% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, +% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee, +% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo, +% \prop_gput:Nnx, \prop_gput:NVx, \prop_gput:Nxn, \prop_gput:Nxx, +% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne, +% \prop_gput:cno, \prop_gput:cnx, +% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe, +% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, +% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee, +% \prop_gput:cno, \prop_gput:con, \prop_gput:cxn, \prop_gput:cxx % } % \begin{macro}{\@@_put:NNnn} % Since the branches of \cs{@@_split:NnTF} are used as the replacement @@ -1193,8 +1266,8 @@ % updated entry is placed at the same spot as the original \meta{key} % in the property list, preserving the order of entries. % \begin{macrocode} -\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Nx } -\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Nx } +\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Ne } +\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_put:NNnn #1#2#3#4 { \tl_set:Nn \l_@@_internal_tl @@ -1207,22 +1280,48 @@ { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } } } \cs_generate_variant:Nn \prop_put:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } + { + NnV , Nnv , Nne , NV , NVV , NVv , NVe , + Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee + } +\cs_generate_variant:Nn \prop_put:Nnn + { Nno , No , Noo , Nnx , NVx , NxV , Nxx } +\cs_generate_variant:Nn \prop_put:Nnn + { + c , cnV , cnv , cne , cV , cVV , cVv , cVe , + cv , cvV , cvv , cve , ce , ceV , cev , cee + } \cs_generate_variant:Nn \prop_put:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } + { cno , co , coo , cnx , cVx , cxV , cxx } +\cs_generate_variant:Nn \prop_gput:Nnn + { + NnV , Nnv , Nne , NV , NVV , NVv , NVe , + Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee + } \cs_generate_variant:Nn \prop_gput:Nnn - { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx } + { Nno , No , Noo , Nnx , NVx , NxV , Nxx } \cs_generate_variant:Nn \prop_gput:Nnn - { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx } + { + c , cnV , cnv , cne , cV , cVV , cVv , cVe , + cv , cvV , cvv , cve , ce , ceV , cev , cee + } +\cs_generate_variant:Nn \prop_gput:Nnn + { cno , co , coo , cnx , cVx , cxV , cxx } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}[tested = m3prop002] -% {\prop_put_if_new:Nnn, \prop_put_if_new:cnn} +% { +% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, +% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV +% } % \begin{macro}[tested = m3prop002] -% {\prop_gput_if_new:Nnn, \prop_gput_if_new:cnn} +% { +% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, +% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV +% } % \begin{macro}{\@@_put_if_new:NNnn} % Adding conditionally also splits. If the key is already present, % the three brace groups given by \cs{@@_split:NnTF} are removed. @@ -1230,9 +1329,9 @@ % convert the key to a string using \cs{tl_to_str:n}. % \begin{macrocode} \cs_new_protected:Npn \prop_put_if_new:Nnn - { \@@_put_if_new:NNnn \__kernel_tl_set:Nx } + { \@@_put_if_new:NNnn \__kernel_tl_set:Ne } \cs_new_protected:Npn \prop_gput_if_new:Nnn - { \@@_put_if_new:NNnn \__kernel_tl_gset:Nx } + { \@@_put_if_new:NNnn \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_put_if_new:NNnn #1#2#3#4 { \tl_set:Nn \l_@@_internal_tl @@ -1244,8 +1343,10 @@ { } { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } } } -\cs_generate_variant:Nn \prop_put_if_new:Nnn { c } -\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c } +\cs_generate_variant:Nn \prop_put_if_new:Nnn + { NnV , NV , cnV , cV } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn + { NnV , NV , cnV , cV } % \end{macrocode} % \end{macro} % \end{macro} @@ -1278,8 +1379,8 @@ % % \begin{macro}[pTF, tested = m3prop003] % { -% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No, -% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co +% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No, +% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co % } % \begin{macro}[EXP]{\@@_if_in:nnn} % Testing expandably if a key is in a property list @@ -1309,7 +1410,7 @@ { \prop_map_break:n { \use_i:nn \prg_return_true: } } } \prg_generate_conditional_variant:Nnn \prop_if_in:Nn - { NV , No , c , cV , co } { p , T , F , TF } + { NV , Ne , No , c , cV , ce , co } { p , T , F , TF } % \end{macrocode} % \end{macro} % \end{macro} @@ -1318,8 +1419,10 @@ % % \begin{macro}[TF, tested = m3prop004] % { -% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN, -% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN, +% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN, +% \prop_get:NoN, \prop_get:NxN, +% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN, +% \prop_get:coN, \prop_get:cxN, % \prop_get:cnc % } % Getting the value corresponding to a key, keeping track of whether @@ -1336,7 +1439,11 @@ { \prg_return_false: } } \prg_generate_conditional_variant:Nnn \prop_get:NnN - { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF } + { NV , Nv , Ne , c , cV , cv , ce } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_get:NnN + { No , Nx , co , cx } { T , F , TF } +\prg_generate_conditional_variant:Nnn \prop_get:NnN + { cnc } { T , F , TF } % \end{macrocode} % \end{macro} % @@ -1471,9 +1578,9 @@ % we use \cs{msg_show_item:nn} to format both the key and the value % for each pair. % \begin{macrocode} -\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \prop_show:N { c } -\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \prop_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { -- cgit v1.2.3