summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3prop.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-10-11 03:02:59 +0000
committerNorbert Preining <norbert@preining.info>2023-10-11 03:02:59 +0000
commit366cf31a771ded1f10860be3212058d48020398d (patch)
tree99ee483a9fd05dfd4ec908582abb44028bdffbd1 /macros/latex/contrib/l3kernel/l3prop.dtx
parent48eedda2cb4d2644886b862409b24a1d8e9a136f (diff)
CTAN sync 202310110302
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3prop.dtx')
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx269
1 files changed, 188 insertions, 81 deletions
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
{