[latex3-commits] [git/LaTeX3-latex3-latex3] master: faster keys_parent:o (538d4e999)

Joseph Wright joseph.wright at morningstar2.co.uk
Wed Aug 5 08:40:39 CEST 2020


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/538d4e999406a2a45d07a076d2f67daf400e3ad4

>---------------------------------------------------------------

commit 538d4e999406a2a45d07a076d2f67daf400e3ad4
Author: Jonathan Spratte <jspratte at yahoo.de>
Date:   Mon Aug 3 22:26:23 2020 +0200

    faster keys_parent:o


>---------------------------------------------------------------

538d4e999406a2a45d07a076d2f67daf400e3ad4
 l3kernel/l3keys.dtx | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/l3kernel/l3keys.dtx b/l3kernel/l3keys.dtx
index eb527c3ad..52388279a 100644
--- a/l3kernel/l3keys.dtx
+++ b/l3kernel/l3keys.dtx
@@ -2928,23 +2928,35 @@
 %
 % \subsection{Utilities}
 %
-% \begin{macro}[EXP]{\@@_parent:n, \@@_parent:o}
-% \begin{macro}[EXP]{\@@_parent:w}
+% \begin{macro}[EXP]{\@@_parent:o}
+% \begin{macro}[EXP]
+%   {
+%     \@@_parent_auxi:w   ,
+%     \@@_parent_auxii:w  ,
+%     \@@_parent_auxiii:n ,
+%     \@@_parent_auxiv:w
+%   }
 %   Used to strip off the ending part of the key path after the last~|/|.
 %    \begin{macrocode}
-\cs_new:Npn \@@_parent:n #1
-  { \@@_parent:w #1 / / \s_@@_stop { } }
-\cs_generate_variant:Nn \@@_parent:n { o }
-\cs_new:Npn \@@_parent:w #1 / #2 / #3 \s_@@_stop #4
+\cs_new:Npn \@@_parent:o #1
+  {
+    \exp_after:wN \@@_parent_auxi:w #1 \q_nil \@@_parent_auxii:w
+      / \q_nil \@@_parent_auxiv:w
+  }
+\cs_new:Npn \@@_parent_auxi:w #1 / #2 \q_nil #3
+  {
+    #3 { #1 } #2 \q_nil #3
+  }
+\cs_new:Npn \@@_parent_auxii:w #1 #2 \q_nil \@@_parent_auxii:w
+  {
+    #1 \@@_parent_auxi:w #2 \q_nil \@@_parent_auxiii:n
+  }
+\cs_new:Npn \@@_parent_auxiii:n #1
+  {
+    / #1 \@@_parent_auxi:w
+  }
+\cs_new:Npn \@@_parent_auxiv:w #1 \q_nil \@@_parent_auxiv:w
   {
-    \tl_if_blank:nTF {#2}
-      {
-        \tl_if_blank:nF {#4}
-          { \use_none:n #4 }
-      }
-      {
-        \@@_parent:w #2 / #3 \s_@@_stop { #4 / #1 }
-      }
   }
 %    \end{macrocode}
 % \end{macro}





More information about the latex3-commits mailing list.