summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex455
1 files changed, 297 insertions, 158 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index cf7dd09bf49..2dc9acf97aa 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -63,7 +63,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-09-24}%
+\def\ExplFileDate{2018-10-17}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -8770,6 +8770,22 @@
\tex_afterassignment:D \__peek_true_aux:w
\cs_set_eq:NN \__peek_tmp:w
}
+\cs_new_protected:Npn \peek_remove_spaces:n #1
+ {
+ \cs_set:Npx \__peek_false:w { \exp_not:n {#1} }
+ \group_align_safe_begin:
+ \cs_set:Npn \__peek_true_aux:w { \peek_after:Nw \__peek_remove_spaces: }
+ \__peek_true_aux:w
+ }
+\cs_new_protected:Npn \__peek_remove_spaces:
+ {
+ \if_meaning:w \l_peek_token \c_space_token
+ \exp_after:wN \__peek_true_remove:w
+ \else:
+ \group_align_safe_end:
+ \exp_after:wN \__peek_false:w
+ \fi:
+ }
\cs_new_protected:Npn \__peek_token_generic_aux:NNNTF #1#2#3#4#5
{
\group_align_safe_begin:
@@ -8841,82 +8857,43 @@
\exp_after:wN \__peek_false:w
\fi:
}
-\cs_new_protected:Npn \__peek_ignore_spaces_execute_branches:
+\tl_map_inline:nn { { catcode } { charcode } { meaning } }
{
- \if_meaning:w \l_peek_token \c_space_token
- \exp_after:wN \peek_after:Nw
- \exp_after:wN \__peek_ignore_spaces_execute_branches:
- \exp:w \exp_end_continue_f:w
- \else:
- \exp_after:wN \__peek_execute_branches:
- \fi:
+ \tl_map_inline:nn { { } { _remove } }
+ {
+ \tl_map_inline:nn { { TF } { T } { F } }
+ {
+ \cs_new_protected:cpx { peek_ #1 ##1 :N ####1 }
+ {
+ \exp_not:c { __peek_token ##1 _generic:NN ####1 }
+ \exp_not:c { __peek_execute_branches_ #1 : }
+ }
+ }
+ }
+ }
+\tl_map_inline:nn
+ {
+ { catcode } { catcode_remove }
+ { charcode } { charcode_remove }
+ { meaning } { meaning_remove }
+ }
+ {
+ \cs_new_protected:cpx { peek_#1_ignore_spaces:NTF } ##1##2##3
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_#1:NTF } ##1 {##2} {##3} }
+ }
+ \cs_new_protected:cpx { peek_#1_ignore_spaces:NT } ##1##2
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_#1:NT } ##1 {##2} }
+ }
+ \cs_new_protected:cpx { peek_#1_ignore_spaces:NF } ##1##2
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_#1:NF } ##1 {##2} }
+ }
}
-\group_begin:
- \cs_set:Npn \__peek_def:nnnn #1#2#3#4
- {
- \__peek_def:nnnnn {#1} {#2} {#3} {#4} { TF }
- \__peek_def:nnnnn {#1} {#2} {#3} {#4} { T }
- \__peek_def:nnnnn {#1} {#2} {#3} {#4} { F }
- }
- \cs_set:Npn \__peek_def:nnnnn #1#2#3#4#5
- {
- \cs_new_protected:cpx { #1 #5 }
- {
- \tl_if_empty:nF {#2}
- { \exp_not:n { \cs_set_eq:NN \__peek_execute_branches: #2 } }
- \exp_not:c { #3 #5 }
- \exp_not:n {#4}
- }
- }
- \__peek_def:nnnn { peek_catcode:N }
- { }
- { __peek_token_generic:NN }
- { \__peek_execute_branches_catcode: }
- \__peek_def:nnnn { peek_catcode_ignore_spaces:N }
- { \__peek_execute_branches_catcode: }
- { __peek_token_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
- \__peek_def:nnnn { peek_catcode_remove:N }
- { }
- { __peek_token_remove_generic:NN }
- { \__peek_execute_branches_catcode: }
- \__peek_def:nnnn { peek_catcode_remove_ignore_spaces:N }
- { \__peek_execute_branches_catcode: }
- { __peek_token_remove_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
- \__peek_def:nnnn { peek_charcode:N }
- { }
- { __peek_token_generic:NN }
- { \__peek_execute_branches_charcode: }
- \__peek_def:nnnn { peek_charcode_ignore_spaces:N }
- { \__peek_execute_branches_charcode: }
- { __peek_token_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
- \__peek_def:nnnn { peek_charcode_remove:N }
- { }
- { __peek_token_remove_generic:NN }
- { \__peek_execute_branches_charcode: }
- \__peek_def:nnnn { peek_charcode_remove_ignore_spaces:N }
- { \__peek_execute_branches_charcode: }
- { __peek_token_remove_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
- \__peek_def:nnnn { peek_meaning:N }
- { }
- { __peek_token_generic:NN }
- { \__peek_execute_branches_meaning: }
- \__peek_def:nnnn { peek_meaning_ignore_spaces:N }
- { \__peek_execute_branches_meaning: }
- { __peek_token_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
- \__peek_def:nnnn { peek_meaning_remove:N }
- { }
- { __peek_token_remove_generic:NN }
- { \__peek_execute_branches_meaning: }
- \__peek_def:nnnn { peek_meaning_remove_ignore_spaces:N }
- { \__peek_execute_branches_meaning: }
- { __peek_token_remove_generic:NN }
- { \__peek_ignore_spaces_execute_branches: }
-\group_end:
\exp_args:Nno \use:nn
{ \cs_new:Npn \__peek_get_prefix_arg_replacement:wN #1 }
{ \tl_to_str:n { macro : } #2 -> #3 \q_stop #4 }
@@ -9264,8 +9241,9 @@
}
}
%% File: l3msg.dtx Copyright (C) 2009-2018 The LaTeX3 Project
-\tl_new:N \l__msg_internal_tl
-\bool_new:N \l__msg_line_context_bool
+\tl_new:N \l__msg_tmp_tl
+\str_new:N \l__msg_name_str
+\str_new:N \l__msg_text_str
\tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ }
\tl_const:Nn \c__msg_more_text_prefix_tl { msg~extra~text~>~ }
\prg_new_conditional:Npnn \msg_if_exist:nn #1#2 { p , T , F , TF }
@@ -9350,49 +9328,61 @@
\c_space_tl
\msg_line_number:
}
-\cs_new_protected:Npn \msg_interrupt:nnn #1#2#3
+\cs_new_protected:Npn \__msg_interrupt:Nnnn #1#2#3#4
{
- \tl_if_empty:nTF {#3}
+ \str_set:Nx \l__msg_text_str { #1 {#2} }
+ \str_set:Nx \l__msg_name_str { \msg_module_name:n {#2} }
+ \tl_if_empty:nTF {#4}
{
- \__msg_interrupt_wrap:nn { \\ \c__msg_no_info_text_tl }
- {#1 \\\\ #2 \\\\ \c__msg_continue_text_tl }
+ \__msg_interrupt_wrap:nnn {#3}
+ { \c__msg_continue_text_tl }
+ { \c__msg_no_info_text_tl }
}
{
- \__msg_interrupt_wrap:nn { \\ #3 }
- {#1 \\\\ #2 \\\\ \c__msg_help_text_tl }
+ \__msg_interrupt_wrap:nnn {#3}
+ { \c__msg_help_text_tl }
+ {#4}
}
}
-\cs_new_protected:Npn \__msg_interrupt_wrap:nn #1#2
+\cs_new_protected:Npn \__msg_interrupt_wrap:nnn #1#2#3
{
- \iow_wrap:nnnN {#1} { | ~ } { } \__msg_interrupt_more_text:n
- \iow_wrap:nnnN {#2} { ! ~ } { } \__msg_interrupt_text:n
+ \iow_wrap:nnnN { \\ #3 } { } { } \__msg_interrupt_more_text:n
+ \group_begin:
+ \int_sub:Nn \l_iow_line_count_int { 2 }
+ \iow_wrap:nxnN { \l__msg_text_str : ~ #1 }
+ {
+ ( \l__msg_name_str )
+ \prg_replicate:nn
+ {
+ \str_count:N \l__msg_text_str
+ - \str_count:N \l__msg_name_str
+ + 2
+ }
+ { ~ }
+ }
+ { } \__msg_interrupt_text:n
+ \iow_wrap:nnnN { \l__msg_tmp_tl \\ \\ #2 } { } { }
+ \__msg_interrupt:n
}
-\cs_new_protected:Npn \__msg_interrupt_more_text:n #1
+\cs_new_protected:Npn \__msg_interrupt_text:n #1
{
- \exp_args:Nx \tex_errhelp:D
- {
- |'''''''''''''''''''''''''''''''''''''''''''''''
- #1 \iow_newline:
- |...............................................
- }
+ \group_end:
+ \tl_set:Nn \l__msg_tmp_tl {#1}
}
+\cs_new_protected:Npn \__msg_interrupt_more_text:n #1
+ { \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } }
\group_begin:
- \char_set_lccode:nn {`\{} {`\ }
- \char_set_lccode:nn {`\}} {`\ }
- \char_set_lccode:nn {`\&} {`\!}
+ \char_set_lccode:nn { 38 } { 32 } % &
+ \char_set_lccode:nn { 46 } { 32 } % .
+ \char_set_lccode:nn { 123 } { 32 } % {
+ \char_set_lccode:nn { 125 } { 32 } % }
\char_set_catcode_active:N \&
\tex_lowercase:D
{
\group_end:
- \cs_new_protected:Npn \__msg_interrupt_text:n #1
+ \cs_new_protected:Npn \__msg_interrupt:n #1
{
- \iow_term:x
- {
- \iow_newline:
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- \iow_newline:
- !
- }
+ \iow_term:n { }
\__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
{
\__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 }
@@ -9414,47 +9404,52 @@
}
}
}
-\cs_new_protected:Npn \msg_log:n #1
- {
- \iow_log:n { ................................................. }
- \iow_wrap:nnnN { . ~ #1} { . ~ } { } \iow_log:n
- \iow_log:n { ................................................. }
- }
-\cs_new_protected:Npn \msg_term:n #1
- {
- \iow_term:n { ************************************************* }
- \iow_wrap:nnnN { * ~ #1} { * ~ } { } \iow_term:n
- \iow_term:n { ************************************************* }
- }
\cs_new:Npn \msg_fatal_text:n #1
{
- Fatal~#1~error
- \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: }
+ Fatal ~
+ \msg_error_text:n {#1}
}
\cs_new:Npn \msg_critical_text:n #1
{
- Critical~#1~error
- \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: }
+ Critical ~
+ \msg_error_text:n {#1}
}
\cs_new:Npn \msg_error_text:n #1
+ { \__msg_text:nn {#1} { Error } }
+\cs_new:Npn \msg_warning_text:n #1
+ { \__msg_text:nn {#1} { Warning } }
+\cs_new:Npn \msg_info_text:n #1
+ { \__msg_text:nn {#1} { Info } }
+\cs_new:Npn \__msg_text:nn #1#2
{
- #1~error
- \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: }
+ \exp_args:Nf \__msg_text:n { \msg_module_type:n {#1} }
+ \msg_module_name:n {#1} ~
+ #2
}
-\cs_new:Npn \msg_warning_text:n #1
+\cs_new:Npn \__msg_text:n #1
{
- #1~warning
- \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: }
+ \tl_if_blank:nF {#1}
+ { #1 ~ }
}
-\cs_new:Npn \msg_info_text:n #1
+\prop_new:N \g_msg_module_name_prop
+\prop_gput:Nnn \g_msg_module_name_prop { LaTeX } { LaTeX3 }
+\prop_new:N \g_msg_module_type_prop
+\prop_gput:Nnn \g_msg_module_type_prop { LaTeX } { }
+\cs_new:Npn \msg_module_type:n #1
{
- #1~info
- \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: }
+ \prop_if_in:NnTF \g_msg_module_type_prop {#1}
+ { \prop_item:Nn \g_msg_module_type_prop {#1} }
+ { Package }
+ }
+\cs_new:Npn \msg_module_name:n #1
+ {
+ \prop_if_in:NnTF \g_msg_module_name_prop {#1}
+ { \prop_item:Nn \g_msg_module_name_prop {#1} }
+ {#1}
}
\cs_new:Npn \msg_see_documentation_text:n #1
{
- \\ \\ See~the~
- \str_if_eq:nnTF {#1} { LaTeX } { LaTeX3 } {#1} ~
+ See~the~ \msg_module_name:n {#1} ~
documentation~for~further~information.
}
\group_begin:
@@ -9498,23 +9493,19 @@
}
\__msg_class_new:nn { fatal }
{
- \msg_interrupt:nnn
- { \msg_fatal_text:n {#1} : ~ "#2" }
- {
- \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
- \msg_see_documentation_text:n {#1}
- }
+ \__msg_interrupt:Nnnn
+ \msg_fatal_text:n
+ {#1}
+ { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
{ \c__msg_fatal_text_tl }
\tex_end:D
}
\__msg_class_new:nn { critical }
{
- \msg_interrupt:nnn
- { \msg_critical_text:n {#1} : ~ "#2" }
- {
- \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
- \msg_see_documentation_text:n {#1}
- }
+ \__msg_interrupt:Nnnn
+ \msg_critical_text:n
+ {#1}
+ { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
{ \c__msg_critical_text_tl }
\tex_endinput:D
}
@@ -9524,12 +9515,10 @@
{ \c__msg_more_text_prefix_tl #1 / #2 }
{#3} {#4} {#5} {#6}
{
- \msg_interrupt:nnn
- { \msg_error_text:n {#1} : ~ "#2" }
- {
- \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
- \msg_see_documentation_text:n {#1}
- }
+ \__msg_interrupt:Nnnn
+ \msg_error_text:n
+ {#1}
+ { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
}
}
\cs_new_protected:Npn \__msg_error:cnnnnn #1#2#3#4#5#6
@@ -9541,19 +9530,47 @@
\cs_new:Npn \__msg_no_more_text:nnnn #1#2#3#4 { }
\__msg_class_new:nn { warning }
{
- \msg_term:n
+ \str_set:Nx \l__msg_text_str { \msg_warning_text:n {#1} }
+ \str_set:Nx \l__msg_name_str { \msg_module_name:n {#1} }
+ \iow_term:n { }
+ \iow_wrap:nxnN
{
- \msg_warning_text:n {#1} : ~ "#2" \\ \\
+ \l__msg_text_str : ~
\use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
}
+ {
+ ( \l__msg_name_str )
+ \prg_replicate:nn
+ {
+ \str_count:N \l__msg_text_str
+ - \str_count:N \l__msg_name_str
+ }
+ { ~ }
+ }
+ { } \iow_term:n
+ \iow_term:n { }
}
\__msg_class_new:nn { info }
{
- \msg_log:n
+ \str_set:Nx \l__msg_text_str { \msg_info_text:n {#1} }
+ \str_set:Nx \l__msg_name_str { \msg_module_name:n {#1} }
+ \iow_log:n { }
+ \iow_wrap:nxnN
{
- \msg_info_text:n {#1} : ~ "#2" \\ \\
+ \l__msg_text_str : ~
\use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
}
+ {
+ ( \l__msg_name_str )
+ \prg_replicate:nn
+ {
+ \str_count:N \l__msg_text_str
+ - \str_count:N \l__msg_name_str
+ }
+ { ~ }
+ }
+ { } \iow_log:n
+ \iow_log:n { }
}
\__msg_class_new:nn { log }
{
@@ -9586,13 +9603,13 @@
{
\tl_if_empty:nF {#1}
{ \exp_args:No \iow_term:n { \use_none:n #1 } }
- \tl_set:Nn \l__msg_internal_tl {#2}
+ \tl_set:Nn \l__msg_tmp_tl {#2}
\__kernel_iow_with:Nnn \tex_newlinechar:D { 10 }
{
\__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 }
{
\tex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
- { \exp_after:wN \l__msg_internal_tl }
+ { \exp_after:wN \l__msg_tmp_tl }
}
}
}
@@ -10148,6 +10165,85 @@
\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnn { nnfff }
\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnn { nnff }
\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnn { nnf }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \iow_log:n }
+\cs_new_protected:Npn \msg_log:n #1
+ {
+ \iow_log:n { ................................................. }
+ \iow_wrap:nnnN { . ~ #1} { . ~ } { } \iow_log:n
+ \iow_log:n { ................................................. }
+ }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \iow_term:n }
+\cs_new_protected:Npn \msg_term:n #1
+ {
+ \iow_term:n { ************************************************* }
+ \iow_wrap:nnnN { * ~ #1} { * ~ } { } \iow_term:n
+ \iow_term:n { ************************************************* }
+ }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { [Defined~error~message] }
+\cs_new_protected:Npn \msg_interrupt:nnn #1#2#3
+ {
+ \tl_if_empty:nTF {#3}
+ {
+ \__msg_old_interrupt_wrap:nn { \\ \c__msg_no_info_text_tl }
+ {#1 \\\\ #2 \\\\ \c__msg_continue_text_tl }
+ }
+ {
+ \__msg_old_interrupt_wrap:nn { \\ #3 }
+ {#1 \\\\ #2 \\\\ \c__msg_help_text_tl }
+ }
+ }
+\cs_new_protected:Npn \__msg_old_interrupt_wrap:nn #1#2
+ {
+ \iow_wrap:nnnN {#1} { | ~ } { } \__msg_old_interrupt_more_text:n
+ \iow_wrap:nnnN {#2} { ! ~ } { } \__msg_old_interrupt_text:n
+ }
+\cs_new_protected:Npn \__msg_old_interrupt_more_text:n #1
+ {
+ \exp_args:Nx \tex_errhelp:D
+ {
+ |'''''''''''''''''''''''''''''''''''''''''''''''
+ #1 \iow_newline:
+ |...............................................
+ }
+ }
+\group_begin:
+ \char_set_lccode:nn {`\{} {`\ }
+ \char_set_lccode:nn {`\}} {`\ }
+ \char_set_lccode:nn {`\&} {`\!}
+ \char_set_catcode_active:N \&
+\tex_lowercase:D
+ {
+ \group_end:
+ \cs_new_protected:Npn \__msg_old_interrupt_text:n #1
+ {
+ \iow_term:x
+ {
+ \iow_newline:
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ \iow_newline:
+ !
+ }
+ \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
+ {
+ \__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 }
+ {
+ \group_begin:
+ \cs_set_protected:Npn &
+ {
+ \tex_errmessage:D
+ {
+ #1
+ \use_none:n
+ { ............................................ }
+ }
+ }
+ \exp_after:wN
+ \group_end:
+ &
+ }
+ }
+ }
+ }
%% File: l3file.dtx Copyright (C) 1990-2018 The LaTeX3 Project
\tl_new:N \l__ior_internal_tl
\int_const:Nn \c_term_ior { 16 }
@@ -10476,6 +10572,7 @@
\exp_args:NNf \group_end:
#4 { \tl_to_str:N \l__iow_wrap_tl }
}
+\cs_generate_variant:Nn \iow_wrap:nnnN { nx }
\cs_new_protected:Npn \__iow_wrap_do:
{
\tl_set:Nx \l__iow_wrap_tl
@@ -11766,6 +11863,7 @@
\bool_new:N \l__keys_no_value_bool
\bool_new:N \l__keys_only_known_bool
\tl_new:N \l_keys_path_tl
+\tl_new:N \l__keys_inherit_tl
\tl_new:N \l__keys_property_tl
\bool_new:N \l__keys_selective_bool
\bool_new:N \l__keys_filtered_bool
@@ -12409,6 +12507,7 @@
\cs_if_exist:cT
{ \c__keys_code_root_tl ##1 / \l_keys_key_tl }
{
+ \tl_set:Nn \l__keys_inherit_tl {##1}
\cs:w \c__keys_code_root_tl ##1 / \l_keys_key_tl
\exp_after:wN \cs_end: \exp_after:wN
{ \l_keys_value_tl }
@@ -12450,8 +12549,18 @@
}
\cs_new:Npn \__keys_choice_find:n #1
{
- \__keys_execute:nn { \l_keys_path_tl / \__keys_remove_spaces:n {#1} }
- { \__keys_execute:nn { \l_keys_path_tl / unknown } { } }
+ \tl_if_empty:NTF \l__keys_inherit_tl
+ { \__keys_choice_find:nn { \l_keys_path_tl } {#1} }
+ {
+ \__keys_choice_find:nn
+ { \l__keys_inherit_tl / \l_keys_key_tl } {#1}
+ }
+ }
+\cs_new:Npn \__keys_choice_find:nn #1#2
+ {
+ \cs_if_exist:cTF { \c__keys_code_root_tl #1 / \__keys_remove_spaces:n {#2} }
+ { \use:c { \c__keys_code_root_tl #1 / \__keys_remove_spaces:n {#2} } {#2} }
+ { \use:c { \c__keys_code_root_tl #1 / unknown } {#2} }
}
\cs_new:Npn \__keys_multichoice_find:n #1
{ \clist_map_function:nN {#1} \__keys_choice_find:n }
@@ -20017,7 +20126,7 @@
\__regex_build_for_cs:n {#1}
\bool_set_eq:NN \l__regex_saved_success_bool
\g__regex_success_bool
- \exp_args:NV \__regex_match:n \l__regex_cs_name_tl
+ \exp_args:NV \__regex_match_cs:n \l__regex_cs_name_tl
\if_meaning:w \c_true_bool \g__regex_success_bool
\group_insert_after:N \__regex_break_true:w
\fi:
@@ -21488,6 +21597,7 @@
}
\cs_new_protected:Npn \__regex_build_for_cs:n #1
{
+ \int_set_eq:NN \l__regex_min_state_int \l__regex_max_active_int
\int_set_eq:NN \l__regex_max_state_int \l__regex_min_state_int
\__regex_build_new_state:
\__regex_build_new_state:
@@ -21867,6 +21977,34 @@
\__regex_match_once:
}
\__kernel_patch:nnNNpn
+ {
+ \__regex_trace_push:nnN { regex } { 1 } \__regex_match_cs:n
+ \__regex_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+ }
+ { \__regex_trace_pop:nnN { regex } { 1 } \__regex_match_cs:n }
+\cs_new_protected:Npn \__regex_match_cs:n #1
+ {
+ \int_zero:N \l__regex_balance_int
+ \int_set:Nn \l__regex_curr_pos_int
+ {
+ \int_max:nn { 2 * \l__regex_max_state_int - \l__regex_min_state_int }
+ { \l__regex_max_pos_int }
+ + 1
+ }
+ \__regex_query_set:nnn { } { -1 } { -2 }
+ \int_set_eq:NN \l__regex_min_pos_int \l__regex_curr_pos_int
+ \str_map_inline:nn {#1}
+ {
+ \__regex_query_set:nnn { \exp_not:n {##1} }
+ { \tl_if_blank:nTF {##1} { 10 } { 12 } }
+ { `##1 }
+ }
+ \int_set_eq:NN \l__regex_max_pos_int \l__regex_curr_pos_int
+ \__regex_query_set:nnn { } { -1 } { -2 }
+ \__regex_match_init:
+ \__regex_match_once:
+ }
+\__kernel_patch:nnNNpn
{ \__regex_trace:nnx { regex } { 1 } { initializing } }
{ }
\cs_new_protected:Npn \__regex_match_init:
@@ -22850,7 +22988,8 @@
{ Invalid~nested~'\iow_char:N\\c'~escape~in~regular~expression. }
{
The~'\iow_char:N\\c'~escape~cannot~be~used~within~
- a~control~sequence~test~'\iow_char:N\\c{...}'.~
+ a~control~sequence~test~'\iow_char:N\\c{...}'~
+ nor~another~category~test.~
To~combine~several~category~tests,~use~'\iow_char:N\\c[...]'.
}
\__kernel_msg_new:nnnn { kernel } { c-C-invalid }