[latex3-commits] [git/LaTeX3-latex3-latex3] master: `.prop_(g)put:N` key property (fixes #444) (536c97d)
Joseph Wright
joseph.wright at morningstar2.co.uk
Fri Feb 1 09:22:58 CET 2019
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/536c97d353d0ae698ffe85cbf7fa25e181e0cfea
>---------------------------------------------------------------
commit 536c97d353d0ae698ffe85cbf7fa25e181e0cfea
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Fri Feb 1 08:22:58 2019 +0000
`.prop_(g)put:N` key property (fixes #444)
>---------------------------------------------------------------
536c97d353d0ae698ffe85cbf7fa25e181e0cfea
l3kernel/CHANGELOG.md | 1 +
l3kernel/l3keys.dtx | 72 ++++++++++++++++++++++++++-----
l3kernel/testfiles/m3expl001.luatex.tlg | 10 ++++-
l3kernel/testfiles/m3expl001.ptex.tlg | 10 ++++-
l3kernel/testfiles/m3expl001.tlg | 10 ++++-
l3kernel/testfiles/m3expl001.uptex.tlg | 10 ++++-
l3kernel/testfiles/m3expl001.xetex.tlg | 10 ++++-
l3kernel/testfiles/m3expl003.luatex.tlg | 10 ++++-
l3kernel/testfiles/m3expl003.ptex.tlg | 10 ++++-
l3kernel/testfiles/m3expl003.tlg | 10 ++++-
l3kernel/testfiles/m3expl003.uptex.tlg | 10 ++++-
l3kernel/testfiles/m3expl003.xetex.tlg | 10 ++++-
l3kernel/testfiles/m3keys002.lvt | 31 +++++++++++++
l3kernel/testfiles/m3keys002.tlg | 26 +++++++++++
14 files changed, 210 insertions(+), 20 deletions(-)
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index b6e4ba5..2f4ab1a 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -11,6 +11,7 @@ this project uses date-based 'snapshot' version identifiers.
- Support for return of whole path by \cs{keys_set_known:nnN}-like
function \cs{keys_set_known:nnnN} (see #508)
+- `.prop_(g)put:N` key property (see #444)
### Fixed
diff --git a/l3kernel/l3keys.dtx b/l3kernel/l3keys.dtx
index 0259c89..d00caef 100644
--- a/l3kernel/l3keys.dtx
+++ b/l3kernel/l3keys.dtx
@@ -382,6 +382,17 @@
% Choices are discussed in detail in section~\ref{sec:l3keys:choice}.
% \end{function}
%
+% \begin{function}[added = 2019-01-31]
+% {.prop_put:N, .prop_put:c, .prop_gput:N, .prop_gput:c}
+% \begin{syntax}
+% \meta{key} .prop_put:N = \meta{property list}
+% \end{syntax}
+% Defines \meta{key} to put the \meta{value} onto the \meta{property list}
+% stored under the \meta{key}.
+% If the variable does not exist, it
+% is created globally at the point that the key is set up.
+% \end{function}
+%
% \begin{function}{.skip_set:N, .skip_set:c, .skip_gset:N, .skip_gset:c}
% \begin{syntax}
% \meta{key} .skip_set:N = \meta{skip}
@@ -1272,10 +1283,12 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_tmp_bool}
+% \begin{variable}{\l_@@_tmp_bool, \l_@@_tmpa_tl, \l_@@_tmpb_tl}
% Scratch space.
% \begin{macrocode}
\bool_new:N \l_@@_tmp_bool
+\tl_new:N \l_@@_tmpa_tl
+\tl_new:N \l_@@_tmpb_tl
% \end{macrocode}
% \end{variable}
%
@@ -1641,6 +1654,28 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_prop_put:Nn, \@@_prop_put:cn}
+% Much the same as other variables, but needs a dedicated auxiliary.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_prop_put:Nn #1#2
+ {
+ \prop_if_exist:NF #1 { \prop_new:N #1 }
+ \exp_after:wN \@@_find_key_module:NNw
+ \exp_after:wN \l_@@_tmpa_tl
+ \exp_after:wN \l_@@_tmpb_tl
+ \l_keys_path_tl / \q_stop
+ \@@_cmd_set:nx { \l_keys_path_tl }
+ {
+ \exp_not:c { prop_ #2 put:Nnn }
+ \exp_not:N #1
+ { \l_@@_tmpb_tl }
+ \exp_not:n { {##1} }
+ }
+ }
+\cs_generate_variant:Nn \@@_prop_put:Nn { c }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_undefine:}
% Undefining a key has to be done without \cs{cs_undefine:c} as that
% function acts globally.
@@ -1962,6 +1997,20 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{.prop_put:N, .prop_put:c, .prop_gput:N, .prop_gput:c}
+% Setting a variable is very easy: just pass the data along.
+% \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_tl .prop_put:N } #1
+ { \@@_prop_put:Nn #1 { } }
+\cs_new_protected:cpn { \c_@@_props_root_tl .prop_put:c } #1
+ { \@@_prop_put:cn {#1} { } }
+\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:N } #1
+ { \@@_prop_put:Nn #1 { g } }
+\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:c } #1
+ { \@@_prop_put:cn {#1} { g } }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{.skip_set:N, .skip_set:c}
% \begin{macro}{.skip_gset:N, .skip_gset:c}
% Setting a variable is very easy: just pass the data along.
@@ -2251,7 +2300,7 @@
%
% \begin{macro}{\@@_set_keyval:n, \@@_set_keyval:nn}
% \begin{macro}{\@@_set_keyval:nnn, \@@_set_keyval:onn}
-% \begin{macro}{\@@_find_key_module:w}
+% \begin{macro}{\@@_find_key_module:NNw}
% \begin{macro}{\@@_set_selective:}
% A shared system once again. First, set the current path and add a
% default if needed. There are then checks to see if the a value is
@@ -2284,7 +2333,10 @@
\@@_trim_spaces:n {#2}
}
\tl_clear:N \l_@@_module_tl
- \exp_after:wN \@@_find_key_module:w \l_keys_path_tl / \q_stop
+ \exp_after:wN \@@_find_key_module:NNw
+ \exp_after:wN \l_@@_module_tl
+ \exp_after:wN \l_keys_key_tl
+ \l_keys_path_tl / \q_stop
\@@_value_or_default:n {#3}
\bool_if:NTF \l_@@_selective_bool
{ \@@_set_selective: }
@@ -2292,17 +2344,17 @@
\tl_set:Nn \l_@@_module_tl {#1}
}
\cs_generate_variant:Nn \@@_set_keyval:nnn { o }
-\cs_new_protected:Npn \@@_find_key_module:w #1 / #2 \q_stop
+\cs_new_protected:Npn \@@_find_key_module:NNw #1#2#3 / #4 \q_stop
{
- \tl_if_blank:nTF {#2}
- { \tl_set:Nn \l_keys_key_tl {#1} }
+ \tl_if_blank:nTF {#4}
+ { \tl_set:Nn #2 {#3} }
{
- \tl_put_right:Nx \l_@@_module_tl
+ \tl_put_right:Nx #1
{
- \tl_if_empty:NF \l_@@_module_tl { / }
- #1
+ \tl_if_empty:NF #1 { / }
+ #3
}
- \@@_find_key_module:w #2 \q_stop
+ \@@_find_key_module:NNw #1#2 #4 \q_stop
}
}
% \end{macrocode}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index fb048cb..f7850a0 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -3231,6 +3231,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3263,6 +3265,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3317,6 +3321,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3378,7 +3386,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index b4c2ef5..04f5df2 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 0213ad0..09f5d96 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 36d106d..6724ff3 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index f05ee00..2c275a6 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -3269,6 +3269,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3301,6 +3303,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3355,6 +3359,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3416,7 +3424,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index fb048cb..f7850a0 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -3231,6 +3231,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3263,6 +3265,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3317,6 +3321,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3378,7 +3386,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index b4c2ef5..04f5df2 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 0213ad0..09f5d96 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 36d106d..6724ff3 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -3524,6 +3524,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3556,6 +3558,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3610,6 +3614,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3671,7 +3679,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index f05ee00..2c275a6 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -3269,6 +3269,8 @@ Defining \l__keys_selective_seq on line ...
Defining \l__keys_unused_clist on line ...
Defining \l_keys_value_tl on line ...
Defining \l__keys_tmp_bool on line ...
+Defining \l__keys_tmpa_tl on line ...
+Defining \l__keys_tmpb_tl on line ...
Defining \keys_define:nn on line ...
Defining \__keys_define:nnn on line ...
Defining \__keys_define:onn on line ...
@@ -3301,6 +3303,8 @@ Defining \__keys_inherit:n on line ...
Defining \__keys_initialise:n on line ...
Defining \__keys_meta_make:n on line ...
Defining \__keys_meta_make:nn on line ...
+Defining \__keys_prop_put:Nn on line ...
+Defining \__keys_prop_put:cn on line ...
Defining \__keys_undefine: on line ...
Defining \__keys_value_requirement:nn on line ...
Defining \__keys_validate_forbidden: on line ...
@@ -3355,6 +3359,10 @@ Defining \key prop > .multichoices:nn on line ...
Defining \key prop > .multichoices:Vn on line ...
Defining \key prop > .multichoices:on on line ...
Defining \key prop > .multichoices:xn on line ...
+Defining \key prop > .prop_put:N on line ...
+Defining \key prop > .prop_put:c on line ...
+Defining \key prop > .prop_gput:N on line ...
+Defining \key prop > .prop_gput:c on line ...
Defining \key prop > .skip_set:N on line ...
Defining \key prop > .skip_set:c on line ...
Defining \key prop > .skip_gset:N on line ...
@@ -3416,7 +3424,7 @@ Defining \__keys_set_keyval:n on line ...
Defining \__keys_set_keyval:nn on line ...
Defining \__keys_set_keyval:nnn on line ...
Defining \__keys_set_keyval:onn on line ...
-Defining \__keys_find_key_module:w on line ...
+Defining \__keys_find_key_module:NNw on line ...
Defining \__keys_set_selective: on line ...
Defining \__keys_check_groups: on line ...
Defining \__keys_value_or_default:n on line ...
diff --git a/l3kernel/testfiles/m3keys002.lvt b/l3kernel/testfiles/m3keys002.lvt
index 286f2fc..279fcef 100644
--- a/l3kernel/testfiles/m3keys002.lvt
+++ b/l3kernel/testfiles/m3keys002.lvt
@@ -479,4 +479,35 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { .prop_put:N }
+ {
+ \keys_define:nn { module }
+ {
+ key-one .prop_put:N = \l_tmpa_prop ,
+ key-two .prop_put:N = \l_mya_prop ,
+ key-three .prop_gput:N = \g_tmpa_prop ,
+ key-four .prop_gput:N = \g_mya_prop ,
+ }
+ \group_begin:
+ \keys_set:nn { module }
+ {
+ key-one = a ,
+ key-two = b ,
+ key-three = c ,
+ key-four = d ,
+ }
+ \prop_log:N \l_tmpa_prop
+ \prop_log:N \l_mya_prop
+ \prop_log:N \g_tmpa_prop
+ \prop_log:N \g_mya_prop
+ \group_end:
+ \prop_log:N \l_tmpa_prop
+ \prop_log:N \l_mya_prop
+ \prop_log:N \g_tmpa_prop
+ \prop_log:N \g_mya_prop
+ }
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\END
diff --git a/l3kernel/testfiles/m3keys002.tlg b/l3kernel/testfiles/m3keys002.tlg
index 3c6392b..85571c5 100644
--- a/l3kernel/testfiles/m3keys002.tlg
+++ b/l3kernel/testfiles/m3keys002.tlg
@@ -345,3 +345,29 @@ Defining key module/key-four on line ...
> \g_tmpa_tl=foobar.
> \g_mya_tl=foobar.
============================================================
+============================================================
+TEST 17: .prop_put:N
+============================================================
+Defining key module/key-one on line ...
+Defining \l_mya_prop on line ...
+Defining key module/key-two on line ...
+Defining key module/key-three on line ...
+Defining \g_mya_prop on line ...
+Defining key module/key-four on line ...
+The property list \l_tmpa_prop contains the pairs (without outer braces):
+> {key-one} => {a}.
+The property list \l_mya_prop contains the pairs (without outer braces):
+> {key-two} => {b}.
+The property list \g_tmpa_prop contains the pairs (without outer braces):
+> {key-three} => {c}.
+The property list \g_mya_prop contains the pairs (without outer braces):
+> {key-four} => {d}.
+The property list \l_tmpa_prop is empty
+> .
+The property list \l_mya_prop is empty
+> .
+The property list \g_tmpa_prop contains the pairs (without outer braces):
+> {key-three} => {c}.
+The property list \g_mya_prop contains the pairs (without outer braces):
+> {key-four} => {d}.
+============================================================
More information about the latex3-commits
mailing list