[latex3-commits] [l3svn] r7512 - In l3str define all documented functions, speed up replacement

noreply at latex-project.org noreply at latex-project.org
Fri Oct 20 01:48:44 CEST 2017


Author: bruno
Date: 2017-10-20 01:48:44 +0200 (Fri, 20 Oct 2017)
New Revision: 7512

Modified:
   trunk/l3kernel/l3str.dtx
   trunk/l3kernel/testfiles/m3expl001.luatex.tlg
   trunk/l3kernel/testfiles/m3expl001.ptex.tlg
   trunk/l3kernel/testfiles/m3expl001.tlg
   trunk/l3kernel/testfiles/m3expl001.uptex.tlg
   trunk/l3kernel/testfiles/m3expl001.xetex.tlg
   trunk/l3kernel/testfiles/m3expl003.luatex.tlg
   trunk/l3kernel/testfiles/m3expl003.ptex.tlg
   trunk/l3kernel/testfiles/m3expl003.tlg
   trunk/l3kernel/testfiles/m3expl003.uptex.tlg
   trunk/l3kernel/testfiles/m3expl003.xetex.tlg
Log:
In l3str define all documented functions, speed up replacement


Modified: trunk/l3kernel/l3str.dtx
===================================================================
--- trunk/l3kernel/l3str.dtx	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/l3str.dtx	2017-10-19 23:48:44 UTC (rev 7512)
@@ -209,10 +209,11 @@
 %     \str_greplace_once:Nnn, \str_greplace_once:cnn
 %   }
 %   \begin{syntax}
-%     \cs{str_replace_once:Nnn} \meta{str~var} \Arg{old string} \Arg{new string}
+%     \cs{str_replace_once:Nnn} \meta{str~var} \Arg{old} \Arg{new}
 %   \end{syntax}
-%   Replaces the first (leftmost) occurrence of \meta{old str} in the
-%   \meta{str~var} with \meta{new str}.
+%   Converts the \meta{old} and \meta{new} token lists to strings, then
+%   replaces the first (leftmost) occurrence of \meta{old string} in the
+%   \meta{str~var} with \meta{new string}.
 % \end{function}
 %
 % \begin{function}[added = 2017-10-08]
@@ -221,12 +222,13 @@
 %     \str_greplace_all:Nnn, \str_greplace_all:cnn
 %   }
 %   \begin{syntax}
-%     \cs{str_replace_all:Nnn} \meta{str~var} \Arg{old string} \Arg{new string}
+%     \cs{str_replace_all:Nnn} \meta{str~var} \Arg{old} \Arg{new}
 %   \end{syntax}
-%   Replaces all occurrences of \meta{old string} in the
-%   \meta{str~var} with \meta{new tokens}.
+%   Converts the \meta{old} and \meta{new} token lists to strings, then
+%   replaces all occurrences of \meta{old string} in the
+%   \meta{str~var} with \meta{new string}.
 %   As this function
-%   operates from left to right, the pattern \meta{old str}
+%   operates from left to right, the pattern \meta{old string}
 %   may remain after the replacement (see \cs{str_remove_all:Nn}
 %   for an example).
 % \end{function}
@@ -237,9 +239,10 @@
 %     \str_gremove_once:Nn, \str_gremove_once:cn
 %   }
 %   \begin{syntax}
-%     \cs{str_remove_once:Nn} \meta{str~var} \Arg{string}
+%     \cs{str_remove_once:Nn} \meta{str~var} \Arg{token list}
 %   \end{syntax}
-%   Removes the first (leftmost) occurrence of \meta{string} from the
+%   Converts the \meta{token list} to a \meta{string} then
+%   removes the first (leftmost) occurrence of \meta{string} from the
 %   \meta{str~var}.
 % \end{function}
 %
@@ -249,12 +252,13 @@
 %     \str_gremove_all:Nn, \str_gremove_all:cn
 %   }
 %   \begin{syntax}
-%     \cs{str_remove_all:Nn} \meta{str~var} \Arg{string}
+%     \cs{str_remove_all:Nn} \meta{str~var} \Arg{token list}
 %   \end{syntax}
-%   Removes all occurrences of \meta{string} from the
-%   \meta{tl~var}.
+%   Converts the \meta{token list} to a \meta{string} then
+%   removes all occurrences of \meta{string} from the
+%   \meta{str~var}.
 %   As this function
-%   operates from left to right, the pattern \meta{tokens}
+%   operates from left to right, the pattern \meta{string}
 %   may remain after the removal, for instance,
 %   \begin{quote}
 %     \cs{str_set:Nn} \cs{l_tmpa_str} |{abbccd}|
@@ -292,7 +296,8 @@
 %     \cs{str_if_eq:NNTF} \meta{str~var_1} \meta{str~var_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
 %   Compares the content of two \meta{str variables} and
-%   is logically \texttt{true} if the two contain the same characters.
+%   is logically \texttt{true} if the two contain the same characters
+%   in the same order.
 % \end{function}
 %
 % \begin{function}[EXP,pTF]
@@ -305,7 +310,8 @@
 %     \cs{str_if_eq:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
 %   Compares the two \meta{token lists} on a character by character
-%   basis, and is \texttt{true} if the two lists contain the same
+%   basis (namely after converting them to strings),
+%   and is \texttt{true} if the two \meta{strings} contain the same
 %   characters in the same order. Thus for example
 %   \begin{verbatim}
 %     \str_if_eq_p:no { abc } { \tl_to_str:n { abc } }
@@ -318,8 +324,9 @@
 %     \cs{str_if_eq_x_p:nn} \Arg{tl_1} \Arg{tl_2}
 %     \cs{str_if_eq_x:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
-%   Compares the full expansion of two \meta{token lists} on a character by
-%   character basis, and is \texttt{true} if the two lists contain the same
+%   Fully expands the two \meta{token lists} and converts them to \meta{strings}, then
+%   compares these on a character by character basis:
+%   it is \texttt{true} if the two \meta{strings} contain the same
 %   characters in the same order. Thus for example
 %   \begin{verbatim}
 %     \str_if_eq_x_p:nn { abc } { \tl_to_str:n { abc } }
@@ -329,18 +336,19 @@
 %
 % \begin{function}[TF, added = 2017-10-08]{\str_if_in:Nn, \str_if_in:cn}
 %   \begin{syntax}
-%     \cs{str_if_in:NnTF} \meta{str~var} \Arg{string} \Arg{true code} \Arg{false code}
+%     \cs{str_if_in:NnTF} \meta{str~var} \Arg{token list} \Arg{true code} \Arg{false code}
 %   \end{syntax}
-%   Tests if the \meta{string} is found in the content of the
+%   Converts the \meta{token list} to a \meta{string} and
+%   tests if that \meta{string} is found in the content of the
 %   \meta{str~var}.
 % \end{function}
 %
 % \begin{function}[TF, added = 2017-10-08]{\str_if_in:nn}
 %   \begin{syntax}
-%     \cs{str_if_in:NnTF} \meta{string_1} \Arg{string_2} \Arg{true code} \Arg{false code}
+%     \cs{str_if_in:nnTF} \meta{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
-%   Tests if \meta{string_2} is found in the content of the
-%   \meta{string_1}.
+%   Converts both \meta{token lists} to \meta{strings} and
+%   tests whether \meta{string_2} is found inside \meta{string_1}.
 % \end{function}
 %
 % \begin{function}[added = 2013-07-24, updated = 2015-02-28, EXP, noTF]
@@ -356,8 +364,9 @@
 %     ~~\Arg{true code}
 %     ~~\Arg{false code}
 %   \end{syntax}
-%   This function compares the \meta{test string} in turn with each
-%   of the \meta{string cases}. If the two are equal (as described for
+%   Compares the \meta{test string} in turn with each
+%   of the \meta{string cases} (all token lists are converted to strings).
+%   If the two are equal (as described for
 %   \cs{str_if_eq:nnTF}) then the associated \meta{code} is left in the
 %   input stream and other cases are discarded. If any of the
 %   cases are matched, the \meta{true code} is also inserted into the
@@ -379,8 +388,9 @@
 %     ~~\Arg{true code}
 %     ~~\Arg{false code}
 %   \end{syntax}
-%   This function compares the full expansion of the \meta{test string}
-%   in turn with the full expansion of the \meta{string cases}. If the two
+%   Compares the full expansion of the \meta{test string}
+%   in turn with the full expansion of the \meta{string cases}
+%   (all token lists are converted to strings).  If the two
 %   full expansions are equal (as described for \cs{str_if_eq:nnTF}) then the
 %   associated \meta{code} is left in the input stream
 %   and other cases are discarded.  If any of the
@@ -401,17 +411,18 @@
 %   \begin{syntax}
 %     \cs{str_map_function:NN} \meta{str~var} \meta{function}
 %   \end{syntax}
-%   Applies \meta{function} to every \meta{item} in the \meta{str~var}.
+%   Applies \meta{function} to every \meta{character} in the \meta{str~var}.
 %   See also \cs{str_map_function:nN}.
 % \end{function}
 %
 % \begin{function}[added = 2017-10-08, rEXP]
 %   {\str_map_function:nN}
 %   \begin{syntax}
-%     \cs{str_map_function:nN} \Arg{string} \meta{function}
+%     \cs{str_map_function:nN} \Arg{token list} \meta{function}
 %   \end{syntax}
-%   Applies \meta{function} to every \meta{item} in the \meta{string}.
-%   See also \cs{str_map_function:nN}.
+%   Converts the \meta{token list} to a \meta{string} then
+%   applies \meta{function} to every \meta{character} in the \meta{string}.
+%   See also \cs{str_map_function:NN}.
 % \end{function}
 %
 % \begin{function}[added = 2017-10-08]
@@ -419,20 +430,21 @@
 %   \begin{syntax}
 %     \cs{str_map_inline:Nn} \meta{str~var} \Arg{inline function}
 %   \end{syntax}
-%   Applies the \meta{inline function} to every \meta{item} stored within the
+%   Applies the \meta{inline function} to every \meta{character} in the
 %   \meta{str~var}. The \meta{inline function} should consist of code which
-%   receives the \meta{item} as |#1|. One in line mapping can be nested
+%   receives the \meta{character} as |#1|. One in line mapping can be nested
 %   inside another. See also \cs{str_map_function:NN}.
 % \end{function}
 %
 % \begin{function}[added = 2017-10-08]
 %   {\str_map_inline:nn}
 %   \begin{syntax}
-%     \cs{str_map_inline:nn} \Arg{string} \Arg{inline function}
+%     \cs{str_map_inline:nn} \Arg{token list} \Arg{inline function}
 %   \end{syntax}
-%   Applies the \meta{inline function} to every \meta{item} in the
+%   Converts the \meta{token list} to a \meta{string} then
+%   applies the \meta{inline function} to every \meta{character} in the
 %   \meta{string}. The \meta{inline function} should consist of code which
-%   receives the \meta{item} as |#1|. One in line mapping can be nested
+%   receives the \meta{character} as |#1|. One in line mapping can be nested
 %   inside another. See also \cs{str_map_function:NN}.
 % \end{function}
 %
@@ -441,9 +453,9 @@
 %   \begin{syntax}
 %     \cs{str_map_variable:NNn} \meta{str~var} \meta{variable} \Arg{function}
 %   \end{syntax}
-%   Applies the \meta{function} to every \meta{item} stored
-%   within the \meta{str~var}. The \meta{function} should consist of code
-%   which receives the \meta{item} stored in the \meta{variable}.
+%   Applies the \meta{function} to every \meta{character} in
+%   the \meta{str~var}. The \meta{function} should consist of code
+%   which receives the \meta{character} stored in the \meta{variable}.
 %   One variable mapping can be nested inside another. See also
 %   \cs{str_map_inline:Nn}.
 % \end{function}
@@ -451,11 +463,12 @@
 % \begin{function}[added = 2017-10-08]
 %   {\str_map_variable:nNn}
 %   \begin{syntax}
-%     \cs{str_map_variable:nNn} \Arg{string} \meta{variable} \Arg{function}
+%     \cs{str_map_variable:nNn} \Arg{token list} \meta{variable} \Arg{function}
 %   \end{syntax}
-%   Applies the \meta{function} to every \meta{item} in the \meta{string}.
+%   Converts the \meta{token list} to a \meta{string} then
+%   applies the \meta{function} to every \meta{character} in the \meta{string}.
 %   The \meta{function} should consist of code
-%   which receives the \meta{item} stored in the \meta{variable}.
+%   which receives the \meta{character} stored in the \meta{variable}.
 %   One variable mapping can be nested inside another. See also
 %   \cs{str_map_inline:Nn}.
 % \end{function}
@@ -465,7 +478,7 @@
 %     \cs{str_map_break:}
 %   \end{syntax}
 %   Used to terminate a \cs[no-index]{str_map_\ldots} function before all
-%   entries in the \meta{string} have been processed. This
+%   characters in the \meta{string} have been processed. This
 %   normally takes place within a conditional statement, for example
 %   \begin{verbatim}
 %     \str_map_inline:Nn \l_my_str
@@ -479,8 +492,8 @@
 %   level \TeX{} errors.
 %   \begin{texnote}
 %     When the mapping is broken, additional tokens may be inserted by the
-%     internal macro \cs{__prg_break_point:Nn} before the \meta{tokens} are
-%     inserted into the input stream.
+%     internal macro \cs{__prg_break_point:Nn} before continuing with the
+%     code that follows the loop.
 %     This depends on the design of the mapping function.
 %   \end{texnote}
 % \end{function}
@@ -490,7 +503,7 @@
 %     \cs{str_map_break:n} \Arg{tokens}
 %   \end{syntax}
 %   Used to terminate a \cs[no-index]{str_map_\ldots} function before all
-%   entries in the \meta{string} have been processed, inserting
+%   characters in the \meta{string} have been processed, inserting
 %   the \meta{tokens} after the mapping has ended. This
 %   normally takes place within a conditional statement, for example
 %   \begin{verbatim}
@@ -965,27 +978,24 @@
 %     \str_replace_once:Nnn,  \str_replace_once:cnn,
 %     \str_greplace_once:Nnn, \str_greplace_once:cnn
 %   }
-% \begin{macro}
-%   {
-%     \str_remove_all:Nn,   \str_remove_all:cn,
-%     \str_gremove_all:Nn,  \str_gremove_all:cn,
-%     \str_remove_once:Nn,  \str_remove_once:cn,
-%     \str_gremove_once:Nn, \str_gremove_once:cn
-%   }
 % \begin{macro}[aux]{\@@_replace:NNNnn}
-% \begin{macro}[aux]{\@@_replace_auxi:NNNnn}
-% \begin{macro}[aux]{\@@_replace_auxii:NNNnn}
-% \begin{macro}[aux]{\@@_replace_wrap:w, \@@_replace_next:w}
-%   The code here is a simplified version of the token list code: as
-%   there is no issue with the delimiter (which is a non-string token)
-%   we do not have to do the preliminaries. There is also a built-in
-%   application of \cs{tl_to_str:N} to avoid any issues if we are fed a
-%   token list.
+% \begin{macro}[aux]{\@@_replace_aux:NNNnnn}
+% \begin{macro}[aux]{\@@_replace_next:w}
+%   Start by applying \cs{tl_to_str:n} to convert the old and new token
+%   lists to strings, and also apply \cs{tl_to_str:N} to avoid any
+%   issues if we are fed a token list variable.  Then the code is a much
+%   simplified version of the token list code because neither the
+%   delimiter nor the replacement can contain macro parameters or
+%   braces.  The delimiter \cs{q_mark} cannot appear in the string to
+%   edit so it is used in all cases.  Some |x|-expansion is unnecessary.
+%   There is no need to avoid losing braces nor to protect against
+%   expansion.  The ending code is much simplified and does not need to
+%   hide in braces.
 %    \begin{macrocode}
 \cs_new_protected:Npn \str_replace_once:Nnn
-  { \@@_replace:NNNnn \@@_replace_wrap:w \tl_set:Nx  }
+  { \@@_replace:NNNnn \prg_do_nothing: \tl_set:Nx  }
 \cs_new_protected:Npn \str_greplace_once:Nnn
-  { \@@_replace:NNNnn \@@_replace_wrap:w \tl_gset:Nx }
+  { \@@_replace:NNNnn \prg_do_nothing: \tl_gset:Nx }
 \cs_new_protected:Npn \str_replace_all:Nnn
   { \@@_replace:NNNnn \@@_replace_next:w \tl_set:Nx  }
 \cs_new_protected:Npn \str_greplace_all:Nnn
@@ -996,56 +1006,66 @@
 \cs_generate_variant:Nn \str_greplace_all:Nnn  { c }
 \cs_new_protected:Npn \@@_replace:NNNnn #1#2#3#4#5
   {
-    \use:x
-      {
-        \@@_replace_auxi:NNNnn \exp_not:N #1 #2 \exp_not:N #3
-          { \tl_to_str:n {#4} } { \tl_to_str:n {#5} }
-      }
-  }
- \cs_new_protected:Npn \@@_replace_auxi:NNNnn #1#2#3#4#5
-  {
     \tl_if_empty:nTF {#4}
       {
         \__msg_kernel_error:nnx { kernel } { empty-search-pattern } {#5}
       }
-      { \@@_replace_auxii:NNNnn #1 #2 #3 {#4} {#5} }
+      {
+        \use:x
+          {
+            \exp_not:n { \@@_replace_aux:NNNnnn #1 #2 #3 }
+              { \tl_to_str:N #3 }
+              { \tl_to_str:n {#4} } { \tl_to_str:n {#5} }
+          }
+      }
   }
-\cs_new_protected:Npn \@@_replace_auxii:NNNnn #1#2#3#4#5
+\cs_new_protected:Npn \@@_replace_aux:NNNnnn #1#2#3#4#5#6
   {
-    \cs_set:Npn \@@_replace_wrap:w ##1 \q_mark ##2
-      { \exp_not:o { \use_none:nn ##1 } ##2 }
-    \cs_set:Npx \@@_replace_next:w ##1 #4
-      {
-        \exp_not:N \@@_replace_wrap:w ##1
-        \exp_not:N \q_mark
-        \exp_not:n { \exp_not:n {#5} }
-        \exp_not:n { #1 { } { } }
-      }
-    #2 #3 { \tl_to_str:N #3 }
+    \cs_set:Npn \@@_replace_next:w ##1 #5 { ##1 #6 #1 }
     #2 #3
       {
-        \exp_after:wN \@@_replace_next:w
-        \exp_after:wN { \exp_after:wN }
-        \exp_after:wN { \exp_after:wN }
-        #3
-        \q_mark
-        {
-          \if_false: { \fi: }
-          \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
-        }
+        \@@_replace_next:w
         #4
+        \use_none_delimit_by_q_stop:w
+        #5
+        \q_stop
       }
   }
-\cs_new_eq:NN \@@_replace_wrap:w ?
 \cs_new_eq:NN \@@_replace_next:w ?
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 % \end{macro}
+%
+% \begin{macro}{\str_remove_once:Nn, \str_remove_once:cn}
+% \begin{macro}{\str_gremove_once:Nn, \str_gremove_once:cn}
+%   Removal is just a special case of replacement.
+%    \begin{macrocode}
+\cs_new_protected:Npn \str_remove_once:Nn #1#2
+  { \str_replace_once:Nnn #1 {#2} { } }
+\cs_new_protected:Npn \str_gremove_once:Nn #1#2
+  { \str_greplace_once:Nnn #1 {#2} { } }
+\cs_generate_variant:Nn \str_remove_once:Nn  { c }
+\cs_generate_variant:Nn \str_gremove_once:Nn { c }
+%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\str_remove_all:Nn, \str_remove_all:cn}
+% \begin{macro}{\str_gremove_all:Nn, \str_gremove_all:cn}
+%   Removal is just a special case of replacement.
+%    \begin{macrocode}
+\cs_new_protected:Npn \str_remove_all:Nn #1#2
+  { \str_replace_all:Nnn #1 {#2} { } }
+\cs_new_protected:Npn \str_gremove_all:Nn #1#2
+  { \str_greplace_all:Nnn #1 {#2} { } }
+\cs_generate_variant:Nn \str_remove_all:Nn  { c }
+\cs_generate_variant:Nn \str_gremove_all:Nn { c }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \subsection{String comparisons}
 %
 % \begin{macro}[pTF, EXP]
@@ -1173,41 +1193,25 @@
 % \end{macro}
 %
 % \begin{macro}[TF]{\str_if_in:Nn, \str_if_in:cn \str_if_in:nn}
-%   Everything here needs to be detokenized but beyond that it is a simple
-%   token list test.
+%   Everything here needs to be detokenized but beyond that it is a
+%   simple token list test.  It would be faster to fine-tune the |T|,
+%   |F|, |TF| variants by calling the appropriate variant of
+%   \cs{tl_if_in:nnTF} directly but that takes more code.
 %    \begin{macrocode}
-\cs_new_protected:Npn \str_if_in:NnT #1#2
+\prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF }
   {
     \use:x
-      { \tl_if_in:nnT { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
-  }
-\cs_new_protected:Npn \str_if_in:NnF #1#2
-  {
-    \use:x
-      { \tl_if_in:nnF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
-  }
-\cs_new_protected:Npn \str_if_in:NnTF #1#2
-  {
-    \use:x
       { \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
+      { \prg_return_true: } { \prg_return_false: }
   }
 \cs_generate_variant:Nn \str_if_in:NnT { c }
 \cs_generate_variant:Nn \str_if_in:NnF  { c }
 \cs_generate_variant:Nn \str_if_in:NnTF { c }
-\cs_new_protected:Npn \str_if_in:nnT #1#2
+\prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF }
   {
     \use:x
-      { \tl_if_in:nnT { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
-  }
-\cs_new_protected:Npn \str_if_in:nnF #1#2
-  {
-    \use:x
-      { \tl_if_in:nnF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
-  }
-\cs_new_protected:Npn \str_if_in:nnTF #1#2
-  {
-    \use:x
       { \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
+      { \prg_return_true: } { \prg_return_false: }
   }
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/l3kernel/testfiles/m3expl001.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.luatex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl001.luatex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -647,10 +647,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.ptex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl001.ptex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl001.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.uptex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl001.uptex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.xetex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl001.xetex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.luatex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl003.luatex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -647,10 +647,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.ptex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl003.ptex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl003.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.uptex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl003.uptex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.xetex.tlg	2017-10-19 23:45:49 UTC (rev 7511)
+++ trunk/l3kernel/testfiles/m3expl003.xetex.tlg	2017-10-19 23:48:44 UTC (rev 7512)
@@ -646,10 +646,16 @@
 Defining \str_replace_all:cnn on line ...
 Defining \str_greplace_all:cnn on line ...
 Defining \__str_replace:NNNnn on line ...
-Defining \__str_replace_auxi:NNNnn on line ...
-Defining \__str_replace_auxii:NNNnn on line ...
-Defining \__str_replace_wrap:w on line ...
+Defining \__str_replace_aux:NNNnnn on line ...
 Defining \__str_replace_next:w on line ...
+Defining \str_remove_once:Nn on line ...
+Defining \str_gremove_once:Nn on line ...
+Defining \str_remove_once:cn on line ...
+Defining \str_gremove_once:cn on line ...
+Defining \str_remove_all:Nn on line ...
+Defining \str_gremove_all:Nn on line ...
+Defining \str_remove_all:cn on line ...
+Defining \str_gremove_all:cn on line ...
 Defining \str_if_exist_p:N on line ...
 Defining \str_if_exist:NT on line ...
 Defining \str_if_exist:NF on line ...



More information about the latex3-commits mailing list