[latex3-commits] [git/LaTeX3-latex3-latex3] master: Use str data consistently in l3keys (fixes #668) (28d14cd53)
Joseph Wright
joseph.wright at morningstar2.co.uk
Sat Feb 8 08:26:55 CET 2020
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/28d14cd53250dc3a932fd041b5d82e20912464d9
>---------------------------------------------------------------
commit 28d14cd53250dc3a932fd041b5d82e20912464d9
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Sat Feb 8 07:26:22 2020 +0000
Use str data consistently in l3keys (fixes #668)
This deprecates two long-standing tl: they
are defined manually but will need to be removed.
>---------------------------------------------------------------
28d14cd53250dc3a932fd041b5d82e20912464d9
l3kernel/CHANGELOG.md | 7 +
l3kernel/doc/l3obsolete.txt | 2 +
l3kernel/l3debug.dtx | 2 +-
l3kernel/l3keys.dtx | 431 ++++++++++++++++++++-------------------
l3kernel/testfiles/m3keys001.lvt | 4 +-
l3kernel/testfiles/m3keys001.tlg | 2 +-
l3kernel/testfiles/m3keys005.lvt | 12 +-
l3kernel/testfiles/m3keys005.tlg | 8 +-
8 files changed, 241 insertions(+), 227 deletions(-)
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 2993075c0..f8cafd105 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -7,6 +7,13 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+### Added
+- `\l_keys_key_str` and `\l_keys_path_str`
+
+### Deprecated
+- `\l_keys_key_tl` and `\l_keys_path_tl`, replaced by `\l_keys_key_str` and
+ `\l_keys_path_str`, respectively
+
## [2020-02-03]
### Changed
diff --git a/l3kernel/doc/l3obsolete.txt b/l3kernel/doc/l3obsolete.txt
index bef029d54..3ca1989e7 100644
--- a/l3kernel/doc/l3obsolete.txt
+++ b/l3kernel/doc/l3obsolete.txt
@@ -58,6 +58,8 @@ Function Expires end
\etex_....:D 2019
\hbox_unpack_clear:c 2020
\hbox_unpack_clear:N 2020
+\l_keys_key_tl 2022
+\l_keys_path_tl 2022
\lua_escape_x:n 2019
\luatex_...:D 2019
\msg_interrupt:nn 2019
diff --git a/l3kernel/l3debug.dtx b/l3kernel/l3debug.dtx
index c1eda3e36..409194e6a 100644
--- a/l3kernel/l3debug.dtx
+++ b/l3kernel/l3debug.dtx
@@ -969,7 +969,7 @@
%<@@=keys>
\__kernel_patch:nnn
{
- \cs_if_exist:cF { \c_@@_code_root_tl #1 }
+ \cs_if_exist:cF { \c_@@_code_root_str #1 }
{ \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
}
{ }
diff --git a/l3kernel/l3keys.dtx b/l3kernel/l3keys.dtx
index 7f2b4ad39..0c15aae67 100644
--- a/l3kernel/l3keys.dtx
+++ b/l3kernel/l3keys.dtx
@@ -639,8 +639,8 @@
% later.
% \end{function}
%
-% \begin{variable}[updated = 2015-07-14]
-% {\l_keys_key_tl, \l_keys_path_tl, \l_keys_value_tl}
+% \begin{variable}[updated = 2020-02-08]
+% {\l_keys_key_str, \l_keys_path_str, \l_keys_value_tl}
% For each key processed, information of the full \emph{path} of the
% key, the \emph{name} of the key and the \emph{value} of the key is
% available within three token list variables. These may be used within
@@ -661,13 +661,12 @@
% \keys_set:nn { mymodule } { subset / key-a = some-value }
% \end{verbatim}
% has path \texttt{mymodule/subset/key-a}. This information is stored in
-% \cs{l_keys_path_tl}, and will have been processed by \cs{tl_to_str:n}.
+% \cs{l_keys_path_str}.
%
% The \emph{name} of the key is the part of the path after the last
% \texttt{/}, and thus is not unique. In the preceding examples, both keys
% have name \texttt{key-a} despite having different paths. This information
-% is stored in \cs{l_keys_key_tl}, and will have been processed by
-% \cs{tl_to_str:n}.
+% is stored in \cs{l_keys_key_str}.
% \end{variable}
%
% \section{Handling of unknown keys}
@@ -681,7 +680,7 @@
% \keys_define:nn { mymodule }
% {
% unknown .code:n =
-% You~tried~to~set~key~'\l_keys_key_tl'~to~'#1'.
+% You~tried~to~set~key~'\l_keys_key_str'~to~'#1'.
% }
% \end{verbatim}
%
@@ -1169,28 +1168,28 @@
%
% \begin{variable}
% {
-% \c_@@_code_root_tl ,
-% \c_@@_default_root_tl ,
-% \c_@@_groups_root_tl ,
-% \c_@@_inherit_root_tl ,
-% \c_@@_type_root_tl ,
-% \c_@@_validate_root_tl
+% \c_@@_code_root_str ,
+% \c_@@_default_root_str ,
+% \c_@@_groups_root_str ,
+% \c_@@_inherit_root_str ,
+% \c_@@_type_root_str ,
+% \c_@@_validate_root_str
% }
% Various storage areas for the different data which make up keys.
% \begin{macrocode}
-\tl_const:Nn \c_@@_code_root_tl { key~code~>~ }
-\tl_const:Nn \c_@@_default_root_tl { key~default~>~ }
-\tl_const:Nn \c_@@_groups_root_tl { key~groups~>~ }
-\tl_const:Nn \c_@@_inherit_root_tl { key~inherit~>~ }
-\tl_const:Nn \c_@@_type_root_tl { key~type~>~ }
-\tl_const:Nn \c_@@_validate_root_tl { key~validate~>~ }
+\str_const:Nn \c_@@_code_root_str { key~code~>~ }
+\str_const:Nn \c_@@_default_root_str { key~default~>~ }
+\str_const:Nn \c_@@_groups_root_str { key~groups~>~ }
+\str_const:Nn \c_@@_inherit_root_str { key~inherit~>~ }
+\str_const:Nn \c_@@_type_root_str { key~type~>~ }
+\str_const:Nn \c_@@_validate_root_str { key~validate~>~ }
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\c_@@_props_root_tl}
+% \begin{variable}{\c_@@_props_root_str}
% The prefix for storing properties.
% \begin{macrocode}
-\tl_const:Nn \c_@@_props_root_tl { key~prop~>~ }
+\str_const:Nn \c_@@_props_root_str { key~prop~>~ }
% \end{macrocode}
% \end{variable}
%
@@ -1212,17 +1211,19 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_keys_key_tl}
-% The name of a key itself: needed when setting keys.
+% \begin{variable}{\l_keys_key_str, \l_keys_key_tl}
+% The name of a key itself: needed when setting keys. The |tl| version
+% is deprecated but has to be handled manually.
% \begin{macrocode}
+\str_new:N \l_keys_key_str
\tl_new:N \l_keys_key_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_module_tl}
+% \begin{variable}{\l_@@_module_str}
% The module for an entire set of keys.
% \begin{macrocode}
-\tl_new:N \l_@@_module_tl
+\str_new:N \l_@@_module_str
% \end{macrocode}
% \end{variable}
%
@@ -1241,33 +1242,36 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_keys_path_tl}
+% \begin{variable}{\l_keys_path_str, \l_keys_path_tl}
% The \enquote{path} of the current key is stored here: this is
-% available to the programmer and so is public.
+% available to the programmer and so is public. The older version is
+% deprecated but has to be handled manually.
% \begin{macrocode}
+\str_new:N \l_keys_path_str
\tl_new:N \l_keys_path_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_inherit_tl}
+% \begin{variable}{\l_@@_inherit_str}
% \begin{macrocode}
-\tl_new:N \l_@@_inherit_tl
+\str_new:N \l_@@_inherit_str
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_relative_tl}
-% The relative path for passing keys back to the user.
+% The relative path for passing keys back to the user. As this can
+% be explicitly no-value, it must be a token list.
% \begin{macrocode}
\tl_new:N \l_@@_relative_tl
\tl_set:Nn \l_@@_relative_tl { \q_no_value }
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_property_tl}
+% \begin{variable}{\l_@@_property_str}
% The \enquote{property} begin set for a key at definition time is
% stored here.
% \begin{macrocode}
-\tl_new:N \l_@@_property_tl
+\str_new:N \l_@@_property_str
% \end{macrocode}
% \end{variable}
%
@@ -1321,12 +1325,12 @@
% removing any leading |/| (which is not needed here).
% \begin{macrocode}
\cs_new_protected:Npn \keys_define:nn
- { \@@_define:onn \l_@@_module_tl }
+ { \@@_define:onn \l_@@_module_str }
\cs_new_protected:Npn \@@_define:nnn #1#2#3
{
- \tl_set:Nx \l_@@_module_tl { \@@_trim_spaces:n {#2} }
+ \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_define:n \@@_define:nn {#3}
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
\cs_generate_variant:Nn \@@_define:nnn { o }
% \end{macrocode}
@@ -1354,14 +1358,13 @@
\cs_new_protected:Npn \@@_define_aux:nn #1#2
{
\@@_property_find:n {#1}
- \cs_if_exist:cTF { \c_@@_props_root_tl \l_@@_property_tl }
- { \@@_define_code:n {#2}
- }
+ \cs_if_exist:cTF { \c_@@_props_root_str \l_@@_property_str }
+ { \@@_define_code:n {#2} }
{
- \tl_if_empty:NF \l_@@_property_tl
+ \str_if_empty:NF \l_@@_property_str
{
\__kernel_msg_error:nnxx { kernel } { key-property-unknown }
- { \l_@@_property_tl } { \l_keys_path_tl }
+ { \l_@@_property_str } { \l_keys_path_str }
}
}
}
@@ -1378,43 +1381,44 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_property_find:n #1
{
- \tl_set:Nx \l_@@_property_tl { \@@_trim_spaces:n {#1} }
- \exp_after:wN \@@_property_find:w \l_@@_property_tl . .
+ \str_set:Nx \l_@@_property_str { \@@_trim_spaces:n {#1} }
+ \exp_after:wN \@@_property_find:w \l_@@_property_str . .
\q_stop {#1}
}
\cs_new_protected:Npn \@@_property_find:w #1 . #2 . #3 \q_stop #4
{
\tl_if_blank:nTF {#3}
{
- \tl_clear:N \l_@@_property_tl
+ \str_clear:N \l_@@_property_str
\__kernel_msg_error:nnn { kernel } { key-no-property } {#4}
}
{
\str_if_eq:nnTF {#3} { . }
{
- \tl_set:Nx \l_keys_path_tl
+ \str_set:Nx \l_keys_path_str
{
- \tl_if_empty:NF \l_@@_module_tl
- { \l_@@_module_tl / }
+ \str_if_empty:NF \l_@@_module_str
+ { \l_@@_module_str / }
\tl_trim_spaces:n {#1}
}
- \tl_set:Nn \l_@@_property_tl { . #2 }
+ \str_set:Nn \l_@@_property_str { . #2 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l_@@_module_tl / #1 . #2 }
+ \str_set:Nx \l_keys_path_str { \l_@@_module_str / #1 . #2 }
\@@_property_search:w #3 \q_stop
}
+ \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
}
}
\cs_new_protected:Npn \@@_property_search:w #1 . #2 \q_stop
{
\str_if_eq:nnTF {#2} { . }
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl }
- \tl_set:Nn \l_@@_property_tl { . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str }
+ \str_set:Nn \l_@@_property_str { . #1 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 }
\@@_property_search:w #2 \q_stop
}
}
@@ -1435,15 +1439,15 @@
\bool_if:NTF \l_@@_no_value_bool
{
\exp_after:wN \@@_define_code:w
- \l_@@_property_tl \q_stop
- { \use:c { \c_@@_props_root_tl \l_@@_property_tl } }
+ \l_@@_property_str \q_stop
+ { \use:c { \c_@@_props_root_str \l_@@_property_str } }
{
\__kernel_msg_error:nnxx { kernel }
- { key-property-requires-value } { \l_@@_property_tl }
- { \l_keys_path_tl }
+ { key-property-requires-value } { \l_@@_property_str }
+ { \l_keys_path_str }
}
}
- { \use:c { \c_@@_props_root_tl \l_@@_property_tl } {#1} }
+ { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} }
}
\exp_last_unbraced:NNNNo
\cs_new:Npn \@@_define_code:w #1 \c_colon_str #2 \q_stop
@@ -1463,14 +1467,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_tl / true }
+ \@@_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \@@_cmd_set:nx { \l_keys_path_tl / false }
+ \@@_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\@@_default_set:n { true }
}
@@ -1485,14 +1489,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_tl / true }
+ \@@_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \@@_cmd_set:nx { \l_keys_path_tl / false }
+ \@@_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\@@_default_set:n { true }
}
@@ -1514,14 +1518,14 @@
\cs_new_protected:Npn \@@_choice_make:N #1
{
\cs_if_exist:cTF
- { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
{
\str_if_eq:vnTF
- { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
- { \l_keys_path_tl } { \@@_parent:o \l_keys_path_tl }
+ { \l_keys_path_tl } { \@@_parent:o \l_keys_path_str }
}
{ \@@_choice_make_aux:N #1 }
}
@@ -1529,13 +1533,13 @@
}
\cs_new_protected:Npn \@@_choice_make_aux:N #1
{
- \cs_set_nopar:cpn { \c_@@_type_root_tl \l_keys_path_tl }
+ \cs_set_nopar:cpn { \c_@@_type_root_str \l_keys_path_str }
{ choice }
- \@@_cmd_set:nn { \l_keys_path_tl } { #1 {##1} }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str } { #1 {##1} }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_tl } {##1}
+ { \l_keys_path_str } {##1}
}
}
% \end{macrocode}
@@ -1560,7 +1564,7 @@
{
\int_incr:N \l_keys_choice_int
\@@_cmd_set:nx
- { \l_keys_path_tl / \@@_trim_spaces:n {##1} }
+ { \l_keys_path_str / \@@_trim_spaces:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
@@ -1579,7 +1583,7 @@
% defining a new key, then saves the code.
% \begin{macrocode}
\cs_new_protected:Npn \@@_cmd_set:nn #1#2
- { \cs_set_protected:cpn { \c_@@_code_root_tl #1 } ##1 {#2} }
+ { \cs_set_protected:cpn { \c_@@_code_root_str #1 } ##1 {#2} }
\cs_generate_variant:Nn \@@_cmd_set:nn { nx , Vn , Vo }
% \end{macrocode}
% \end{macro}
@@ -1593,12 +1597,12 @@
\tl_if_empty:nTF {#1}
{
\cs_set_eq:cN
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
\tex_undefined:D
}
{
\cs_set_nopar:cpx
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
{ \exp_not:n {#1} }
\@@_value_requirement:nn { required } { false }
}
@@ -1618,11 +1622,11 @@
\clist_set:Nn \l_@@_groups_clist {#1}
\clist_if_empty:NTF \l_@@_groups_clist
{
- \cs_set_eq:cN { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c_@@_groups_root_str \l_keys_path_str }
\tex_undefined:D
}
{
- \cs_set_eq:cN { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c_@@_groups_root_str \l_keys_path_str }
\l_@@_groups_clist
}
}
@@ -1636,7 +1640,7 @@
\cs_new_protected:Npn \@@_inherit:n #1
{
\@@_undefine:
- \cs_set_nopar:cpn { \c_@@_inherit_root_tl \l_keys_path_tl } {#1}
+ \cs_set_nopar:cpn { \c_@@_inherit_root_str \l_keys_path_str } {#1}
}
% \end{macrocode}
% \end{macro}
@@ -1647,11 +1651,11 @@
\cs_new_protected:Npn \@@_initialise:n #1
{
\cs_if_exist:cTF
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_execute_inherit: }
{
- \tl_clear:N \l_@@_inherit_tl
- \cs_if_exist_use:cT { \c_@@_code_root_tl \l_keys_path_tl } { {#1} }
+ \str_clear:N \l_@@_inherit_str
+ \cs_if_exist_use:cT { \c_@@_code_root_str \l_keys_path_str } { {#1} }
}
}
% \end{macrocode}
@@ -1663,14 +1667,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_meta_make:n #1
{
- \@@_cmd_set:Vo \l_keys_path_tl
+ \@@_cmd_set:Vo \l_keys_path_str
{
\exp_after:wN \keys_set:nn
- \exp_after:wN { \l_@@_module_tl } {#1}
+ \exp_after:wN { \l_@@_module_str } {#1}
}
}
\cs_new_protected:Npn \@@_meta_make:nn #1#2
- { \@@_cmd_set:Vn \l_keys_path_tl { \keys_set:nn {#1} {#2} } }
+ { \@@_cmd_set:Vn \l_keys_path_str { \keys_set:nn {#1} {#2} } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1684,8 +1688,8 @@
\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 }
+ \l_keys_path_str / \q_stop
+ \@@_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -1707,7 +1711,7 @@
{ code , default , groups , inherit , type , validate }
{
\cs_set_eq:cN
- { \tl_use:c { c_@@_ ##1 _root_tl } \l_keys_path_tl }
+ { \tl_use:c { c_@@_ ##1 _root_str } \l_keys_path_str }
\tex_undefined:D
}
}
@@ -1730,17 +1734,17 @@
{ true }
{
\cs_set_eq:cc
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
{ @@_validate_ #1 : }
}
{ false }
{
\cs_if_eq:ccT
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
{ @@_validate_ #1 : }
{
\cs_set_eq:cN
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
\tex_undefined:D
}
}
@@ -1756,7 +1760,7 @@
\bool_if:NF \l_@@_no_value_bool
{
\__kernel_msg_error:nnxx { kernel } { value-forbidden }
- { \l_keys_path_tl } { \l_keys_value_tl }
+ { \l_keys_path_str } { \l_keys_value_tl }
\@@_validate_cleanup:w
}
}
@@ -1765,7 +1769,7 @@
\bool_if:NT \l_@@_no_value_bool
{
\__kernel_msg_error:nnx { kernel } { value-required }
- { \l_keys_path_tl }
+ { \l_keys_path_str }
\@@_validate_cleanup:w
}
}
@@ -1783,7 +1787,7 @@
\cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \@@_cmd_set:nx { \l_keys_path_tl }
+ \@@_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -1816,13 +1820,13 @@
% \begin{macro}{.bool_gset:N, .bool_gset:c}
% One function for this.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set:N } #1
{ \@@_bool_set:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set:c } #1
{ \@@_bool_set:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset:N } #1
{ \@@_bool_set:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset:c } #1
{ \@@_bool_set:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -1832,13 +1836,13 @@
% \begin{macro}{.bool_gset_inverse:N, .bool_gset_inverse:c}
% One function for this.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set_inverse:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set_inverse:N } #1
{ \@@_bool_set_inverse:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set_inverse:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set_inverse:c } #1
{ \@@_bool_set_inverse:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset_inverse:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset_inverse:N } #1
{ \@@_bool_set_inverse:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset_inverse:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset_inverse:c } #1
{ \@@_bool_set_inverse:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -1848,7 +1852,7 @@
% Making a choice is handled internally, as it is also needed by
% \texttt{.generate_choices:n}.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .choice: }
+\cs_new_protected:cpn { \c_@@_props_root_str .choice: }
{ \@@_choice_make: }
% \end{macrocode}
% \end{macro}
@@ -1859,13 +1863,13 @@
% Here, |#1| consists of two separate
% arguments, hence the slightly odd-looking implementation.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:nn } #1
{ \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:Vn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:Vn } #1
{ \exp_args:NV \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:on } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:on } #1
{ \exp_args:No \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:xn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1
{ \exp_args:Nx \@@_choices_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -1874,21 +1878,21 @@
% Creating code is simply a case of passing through to the underlying
% \texttt{set} function.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .code:n } #1
- { \@@_cmd_set:nn { \l_keys_path_tl } {#1} }
+\cs_new_protected:cpn { \c_@@_props_root_str .code:n } #1
+ { \@@_cmd_set:nn { \l_keys_path_str } {#1} }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{.clist_set:N, .clist_set:c}
% \begin{macro}{.clist_gset:N, .clist_gset:c}
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_set:N } #1
{ \@@_variable_set:NnnN #1 { clist } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_set:c } #1
{ \@@_variable_set:cnnN {#1} { clist } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_gset:N } #1
{ \@@_variable_set:NnnN #1 { clist } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_gset:c } #1
{ \@@_variable_set:cnnN {#1} { clist } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1897,13 +1901,13 @@
% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
% Expansion is left to the internal functions.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:n } #1
{ \@@_default_set:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:V } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:V } #1
{ \exp_args:NV \@@_default_set:n #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:o } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:o } #1
{ \exp_args:No \@@_default_set:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:x } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:x } #1
{ \exp_args:Nx \@@_default_set:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1912,13 +1916,13 @@
% \begin{macro}{.dim_gset:N, .dim_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_set:N } #1
{ \@@_variable_set_required:NnnN #1 { dim } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { dim } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { dim } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { dim } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1928,13 +1932,13 @@
% \begin{macro}{.fp_gset:N, .fp_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_set:N } #1
{ \@@_variable_set_required:NnnN #1 { fp } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { fp } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { fp } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { fp } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1943,7 +1947,7 @@
% \begin{macro}{.groups:n}
% A single property to create groups of keys.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .groups:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .groups:n } #1
{ \@@_groups_set:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1951,7 +1955,7 @@
% \begin{macro}{.inherit:n}
% Nothing complex: only one variant at the moment!
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .inherit:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .inherit:n } #1
{ \@@_inherit:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1959,13 +1963,13 @@
% \begin{macro}{.initial:n, .initial:V, .initial:o, .initial:x}
% The standard hand-off approach.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:n } #1
{ \@@_initialise:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:V } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:V } #1
{ \exp_args:NV \@@_initialise:n #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:o } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:o } #1
{ \exp_args:No \@@_initialise:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:x } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:x } #1
{ \exp_args:Nx \@@_initialise:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1974,13 +1978,13 @@
% \begin{macro}{.int_gset:N, .int_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_set:N } #1
{ \@@_variable_set_required:NnnN #1 { int } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { int } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { int } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { int } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1989,7 +1993,7 @@
% \begin{macro}{.meta:n}
% Making a meta is handled internally.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .meta:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .meta:n } #1
{ \@@_meta_make:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1998,7 +2002,7 @@
% Meta with path: potentially lots of variants, but for the moment
% no so many defined.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .meta:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .meta:nn } #1
{ \@@_meta_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -2012,15 +2016,15 @@
% The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but
% where more than one choice is allowed.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoice: }
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoice: }
{ \@@_multichoice_make: }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:nn } #1
{ \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:Vn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:Vn } #1
{ \exp_args:NV \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:on } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:on } #1
{ \exp_args:No \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:xn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1
{ \exp_args:Nx \@@_multichoices_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -2029,13 +2033,13 @@
% \begin{macro}{.muskip_set:N, .muskip_set:c, .muskip_gset:N, .muskip_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_set:N } #1
{ \@@_variable_set_required:NnnN #1 { muskip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { muskip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { muskip } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { muskip } { g } n }
% \end{macrocode}
% \end{macro}
@@ -2043,13 +2047,13 @@
% \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
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_put:N } #1
{ \@@_prop_put:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_put:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_put:c } #1
{ \@@_prop_put:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_gput:N } #1
{ \@@_prop_put:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_gput:c } #1
{ \@@_prop_put:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -2058,13 +2062,13 @@
% \begin{macro}{.skip_gset:N, .skip_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_set:N } #1
{ \@@_variable_set_required:NnnN #1 { skip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { skip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { skip } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { skip } { g } n }
% \end{macrocode}
% \end{macro}
@@ -2076,21 +2080,21 @@
% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:N } #1
{ \@@_variable_set:NnnN #1 { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set_x:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
{ \@@_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set_x:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:N } #1
{ \@@_variable_set:NnnN #1 { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset_x:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
{ \@@_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset_x:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { g } x }
% \end{macrocode}
% \end{macro}
@@ -2101,7 +2105,7 @@
% \begin{macro}{.undefine:}
% Another simple wrapper.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .undefine: }
+\cs_new_protected:cpn { \c_@@_props_root_str .undefine: }
{ \@@_undefine: }
% \end{macrocode}
% \end{macro}
@@ -2110,9 +2114,9 @@
% \begin{macro}{.value_required:n}
% These are very similar, so both call the same function.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .value_forbidden:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .value_forbidden:n } #1
{ \@@_value_requirement:nn { forbidden } {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .value_required:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .value_required:n } #1
{ \@@_value_requirement:nn { required } {#1} }
% \end{macrocode}
% \end{macro}
@@ -2150,12 +2154,12 @@
}
\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
\cs_new_protected:Npn \@@_set:nn #1#2
- { \exp_args:No \@@_set:nnn \l_@@_module_tl {#1} {#2} }
+ { \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} }
\cs_new_protected:Npn \@@_set:nnn #1#2#3
{
- \tl_set:Nx \l_@@_module_tl { \@@_trim_spaces:n {#2} }
+ \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_set_keyval:n \@@_set_keyval:nn {#3}
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
% \end{macrocode}
% \end{macro}
@@ -2354,12 +2358,12 @@
\cs_new_protected:Npn \@@_set_keyval:n #1
{
\bool_set_true:N \l_@@_no_value_bool
- \@@_set_keyval:onn \l_@@_module_tl {#1} { }
+ \@@_set_keyval:onn \l_@@_module_str {#1} { }
}
\cs_new_protected:Npn \@@_set_keyval:nn #1#2
{
\bool_set_false:N \l_@@_no_value_bool
- \@@_set_keyval:onn \l_@@_module_tl {#1} {#2}
+ \@@_set_keyval:onn \l_@@_module_str {#1} {#2}
}
% \end{macrocode}
% The key path here can be fully defined, after which there is a search
@@ -2370,33 +2374,34 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_keyval:nnn #1#2#3
{
- \tl_set:Nx \l_keys_path_tl
+ \tl_set:Nx \l_keys_path_str
{
\tl_if_blank:nF {#1}
{ #1 / }
\@@_trim_spaces:n {#2}
}
- \tl_clear:N \l_@@_module_tl
- \tl_clear:N \l_@@_inherit_tl
+ \str_clear:N \l_@@_module_str
+ \str_clear:N \l_@@_inherit_str
\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
+ \exp_after:wN \l_@@_module_str
+ \exp_after:wN \l_keys_key_str
+ \l_keys_path_str / \q_stop
+ \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
\@@_value_or_default:n {#3}
\bool_if:NTF \l_@@_selective_bool
{ \@@_set_selective: }
{ \@@_execute: }
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
\cs_generate_variant:Nn \@@_set_keyval:nnn { o }
\cs_new_protected:Npn \@@_find_key_module:NNw #1#2#3 / #4 \q_stop
{
\tl_if_blank:nTF {#4}
- { \tl_set:Nn #2 {#3} }
+ { \str_set:Nn #2 {#3} }
{
- \tl_put_right:Nx #1
+ \str_put_right:Nx #1
{
- \tl_if_empty:NF #1 { / }
+ \str_if_empty:NF #1 { / }
#3
}
\@@_find_key_module:NNw #1#2 #4 \q_stop
@@ -2410,10 +2415,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_selective:
{
- \cs_if_exist:cTF { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_groups_root_str \l_keys_path_str }
{
\clist_set_eq:Nc \l_@@_groups_clist
- { \c_@@_groups_root_tl \l_keys_path_tl }
+ { \c_@@_groups_root_str \l_keys_path_str }
\@@_check_groups:
}
{
@@ -2469,16 +2474,16 @@
{
\bool_if:NTF \l_@@_no_value_bool
{
- \cs_if_exist:cTF { \c_@@_default_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_default_root_str \l_keys_path_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
}
{
\tl_clear:N \l_keys_value_tl
\cs_if_exist:cT
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_default_inherit: }
}
}
@@ -2487,14 +2492,14 @@
\cs_new_protected:Npn \@@_default_inherit:
{
\clist_map_inline:cn
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c_@@_default_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_default_root_str ##1 / \l_keys_key_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c_@@_default_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_default_root_str ##1 / \l_keys_key_str }
\clist_map_break:
}
}
@@ -2514,15 +2519,15 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_execute:
{
- \cs_if_exist:cTF { \c_@@_code_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_code_root_str \l_keys_path_str }
{
- \cs_if_exist_use:c { \c_@@_validate_root_tl \l_keys_path_tl }
- \cs:w \c_@@_code_root_tl \l_keys_path_tl \exp_after:wN \cs_end:
+ \cs_if_exist_use:c { \c_@@_validate_root_str \l_keys_path_str }
+ \cs:w \c_@@_code_root_str \l_keys_path_str \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{
\cs_if_exist:cTF
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_execute_inherit: }
{ \@@_execute_unknown: }
}
@@ -2535,14 +2540,14 @@
\cs_new_protected:Npn \@@_execute_inherit:
{
\clist_map_inline:cn
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c_@@_code_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_code_root_str ##1 / \l_keys_key_str }
{
- \tl_set:Nn \l_@@_inherit_tl {##1}
- \cs_if_exist_use:c { \c_@@_validate_root_tl ##1 / \l_keys_key_tl }
- \cs:w \c_@@_code_root_tl ##1 / \l_keys_key_tl
+ \str_set:Nn \l_@@_inherit_str {##1}
+ \cs_if_exist_use:c { \c_@@_validate_root_str ##1 / \l_keys_key_str }
+ \cs:w \c_@@_code_root_str ##1 / \l_keys_key_str
\exp_after:wN \cs_end: \exp_after:wN
{ \l_keys_value_tl }
\clist_map_break:n { \use_none:n }
@@ -2556,22 +2561,22 @@
{ \@@_store_unused: }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \l_@@_module_tl / unknown }
+ { \c_@@_code_root_str \l_@@_module_str / unknown }
{
- \cs:w \c_@@_code_root_tl \l_@@_module_tl / unknown
+ \cs:w \c_@@_code_root_str \l_@@_module_str / unknown
\exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl }
}
{
\__kernel_msg_error:nnxx { kernel } { key-unknown }
- { \l_keys_path_tl } { \l_@@_module_tl }
+ { \l_keys_path_str } { \l_@@_module_str }
}
}
}
\cs_new:Npn \@@_execute:nn #1#2
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 }
+ \cs_if_exist:cTF { \c_@@_code_root_str #1 }
{
- \cs:w \c_@@_code_root_tl #1 \exp_after:wN \cs_end:
+ \cs:w \c_@@_code_root_str #1 \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{#2}
@@ -2589,7 +2594,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_key_tl
+ \exp_not:o \l_keys_key_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2599,7 +2604,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_path_tl
+ \exp_not:o \l_keys_path_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2622,7 +2627,7 @@
\tl_if_blank:nF {##1}
{
\__kernel_msg_error:nnxx { kernel } { bad-relative-key-path }
- \l_keys_path_tl
+ \l_keys_path_str
\l_@@_relative_tl
}
\clist_put_right:Nx \l_@@_unused_clist
@@ -2634,7 +2639,7 @@
}
\use:x
{
- \@@_store_unused:w \l_keys_path_tl
+ \@@_store_unused:w \l_keys_path_str
\l_@@_relative_tl / \l_@@_relative_tl /
\exp_not:N \q_stop
}
@@ -2655,18 +2660,18 @@
% \begin{macrocode}
\cs_new:Npn \@@_choice_find:n #1
{
- \tl_if_empty:NTF \l_@@_inherit_tl
- { \@@_choice_find:nn { \l_keys_path_tl } {#1} }
+ \str_if_empty:NTF \l_@@_inherit_str
+ { \@@_choice_find:nn { \l_keys_path_str } {#1} }
{
\@@_choice_find:nn
- { \l_@@_inherit_tl / \l_keys_key_tl } {#1}
+ { \l_@@_inherit_str / \l_keys_key_str } {#1}
}
}
\cs_new:Npn \@@_choice_find:nn #1#2
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 / \@@_trim_spaces:n {#2} }
- { \use:c { \c_@@_code_root_tl #1 / \@@_trim_spaces:n {#2} } {#2} }
- { \use:c { \c_@@_code_root_tl #1 / unknown } {#2} }
+ \cs_if_exist:cTF { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} }
+ { \use:c { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} } {#2} }
+ { \use:c { \c_@@_code_root_str #1 / unknown } {#2} }
}
\cs_new:Npn \@@_multichoice_find:n #1
{ \clist_map_function:nN {#1} \@@_choice_find:n }
@@ -2742,7 +2747,7 @@
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \@@_trim_spaces:n { #1 / #2 } }
+ { \c_@@_code_root_str \@@_trim_spaces:n { #1 / #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2756,7 +2761,7 @@
{ p , T , F , TF }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \@@_trim_spaces:n { #1 / #2 / #3 } }
+ { \c_@@_code_root_str \@@_trim_spaces:n { #1 / #2 / #3 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2781,7 +2786,7 @@
{
\exp_args:Nc \cs_replacement_spec:N
{
- \c_@@_code_root_tl
+ \c_@@_code_root_str
\@@_trim_spaces:n { #2 / #3 }
}
}
diff --git a/l3kernel/testfiles/m3keys001.lvt b/l3kernel/testfiles/m3keys001.lvt
index 3984ee19f..0677c5769 100644
--- a/l3kernel/testfiles/m3keys001.lvt
+++ b/l3kernel/testfiles/m3keys001.lvt
@@ -1,4 +1,4 @@
-% Copyright (C) 2013,2015,2018,2019 The LaTeX3 Project
+% Copyright (C) 2013,2015,2018-2020 The LaTeX3 Project
\documentclass{minimal}
@@ -294,7 +294,7 @@
{
\keys_define:nn { }
{
- key .code:n = \tl_show:N \l_keys_path_tl
+ key .code:n = \tl_show:N \l_keys_path_str
}
\keys_set:nn { } { key }
}
diff --git a/l3kernel/testfiles/m3keys001.tlg b/l3kernel/testfiles/m3keys001.tlg
index 9287ebb20..9dca3f86b 100644
--- a/l3kernel/testfiles/m3keys001.tlg
+++ b/l3kernel/testfiles/m3keys001.tlg
@@ -150,7 +150,7 @@ LaTeX did not find a '.' to indicate the start of a property.
TEST 11: Empty module
============================================================
Defining key key on line ...
-> \l_keys_path_tl=key.
+> \l_keys_path_str=key.
<recently read> }
l. ... }
============================================================
diff --git a/l3kernel/testfiles/m3keys005.lvt b/l3kernel/testfiles/m3keys005.lvt
index 6938afa85..cb3e26091 100644
--- a/l3kernel/testfiles/m3keys005.lvt
+++ b/l3kernel/testfiles/m3keys005.lvt
@@ -1,4 +1,4 @@
-% Copyright (C) 2015,2018 The LaTeX3 Project
+% Copyright (C) 2015,2018,2020 The LaTeX3 Project
\documentclass{minimal}
@@ -23,8 +23,8 @@
{
bar / baz .code:n =
{
- \tl_log:N \l_keys_key_tl
- \tl_log:N \l_keys_path_tl
+ \tl_log:N \l_keys_key_str
+ \tl_log:N \l_keys_path_str
}
}
\keys_set:nn { foo } { bar / baz }
@@ -32,8 +32,8 @@
{
bar .code:n =
{
- \tl_log:N \l_keys_key_tl
- \tl_log:N \l_keys_path_tl
+ \tl_log:N \l_keys_key_str
+ \tl_log:N \l_keys_path_str
}
}
\keys_set:nn { foo / baz } { bar }
@@ -45,7 +45,7 @@
{
foobar .choice: ,
foobar / unknown .code:n =
- \keys_set:no { moduleB } { \l_keys_key_tl = #1 }
+ \keys_set:no { moduleB } { \l_keys_key_str = #1 }
}
\keys_define:nn { moduleB } { test .code:n = \tl_log:n {#1} }
\keys_set:nn { moduleA / foobar } { test = xxx }
diff --git a/l3kernel/testfiles/m3keys005.tlg b/l3kernel/testfiles/m3keys005.tlg
index c180c3e90..e025ee119 100644
--- a/l3kernel/testfiles/m3keys005.tlg
+++ b/l3kernel/testfiles/m3keys005.tlg
@@ -5,11 +5,11 @@ Author: Joseph Wright
TEST 1: Key names and paths
============================================================
Defining key foo/bar/baz on line ...
-> \l_keys_key_tl=baz.
-> \l_keys_path_tl=foo/bar/baz.
+> \l_keys_key_str=baz.
+> \l_keys_path_str=foo/bar/baz.
Defining key foo/baz/bar on line ...
-> \l_keys_key_tl=bar.
-> \l_keys_path_tl=foo/baz/bar.
+> \l_keys_key_str=bar.
+> \l_keys_path_str=foo/baz/bar.
============================================================
============================================================
TEST 2: Modules hidden in key part
More information about the latex3-commits
mailing list.