summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/etl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-11-08 23:16:59 +0000
committerKarl Berry <karl@freefriends.org>2021-11-08 23:16:59 +0000
commit87b3a936763b34a0b1a91c081cc739a2067192bc (patch)
tree1d2ea54410c9d6af811332d62b519ed5ed359b9c /Master/texmf-dist/tex/latex/etl
parenta3b0e2860cc1c1d56ba6866e1c4b9e7f13458895 (diff)
etl (9nov21)
git-svn-id: svn://tug.org/texlive/trunk@60998 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/etl')
-rw-r--r--Master/texmf-dist/tex/latex/etl/etl.sty109
1 files changed, 64 insertions, 45 deletions
diff --git a/Master/texmf-dist/tex/latex/etl/etl.sty b/Master/texmf-dist/tex/latex/etl/etl.sty
index de2abad38c5..974c4d0e4cf 100644
--- a/Master/texmf-dist/tex/latex/etl/etl.sty
+++ b/Master/texmf-dist/tex/latex/etl/etl.sty
@@ -30,7 +30,7 @@
%% etl.sty
%%
\ProvidesExplPackage{etl}
- {2021-08-28} {0.2}
+ {2021-11-07} {0.3}
{expandable token list manipulation}
\cs_if_exist:NF \tex_expanded:D
{
@@ -43,10 +43,6 @@
\cs_new_eq:NN \__etl_detokenize:w \tex_detokenize:D
\scan_new:N \s__etl_stop
\scan_new:N \s__etl_mark
-\cs_new:Npn \__etl_if_mark:nTF #1
- { \__etl_if_mark:w #1 \__etl_if_mark_true:w \s__etl_mark \use_ii:nn }
-\cs_new:Npn \__etl_if_mark:w #1 \s__etl_mark {}
-\cs_new:Npn \__etl_if_mark_true:w \s__etl_mark \use_ii:nn #1#2 {#1}
\cs_new:Npn \__etl_split_first:w #1
{
{ \__etl_unexpanded:w {#1} }
@@ -98,13 +94,11 @@
\__etl_act_result:n {#6} {#4}
}}
}
-\cs_new:Npn \__etl_act:nnnnnnn #1#2#3#4#5#6#7
+\exp_args:NNno \exp_args:Nno \use:n
+ { \cs_new:Npn \__etl_act:nnnnnnn #1#2#3#4#5#6#7 }
{
- \__etl_expanded:w
- {
- \__etl_act:w #7 {\s__etl_stop} . \s__etl_stop {#5} {#1} {#2} {#3}
- \__etl_act_result:n {#6} {#4}
- }
+ \exp_after:wN \use_ii_iii:nnn
+ \etl_act:nnnnnnn {#1} {#2} {#3} {#4} {#5} {#6} {#7}
}
\exp_args:Nno \use:n { \cs_new:Npn \etl_act:nnnnnn #1#2#3#4#5#6 }
{ \etl_act:nnnnnnn {#1} {#2} {#3} {#4} {#5} {} {#6} }
@@ -193,6 +187,27 @@
\cs_new:Npn \__etl_act_unexpanded_normal:nN #1 { \exp_not:N }
\cs_new:Npn \__etl_act_unexpanded_space:n #1 { ~ }
\cs_new:Npn \__etl_act_unexpanded_group:nn #1#2 { { \__etl_unexpanded:w {#2} } }
+\cs_new:Npn \__etl_act_unexpanded_rest:w #1 \__etl_act:w #2#
+ {
+ \__etl_unexpanded:w {#2}
+ \__etl_act_unexpanded_rest_aux:n
+ }
+\cs_new:Npn \__etl_act_unexpanded_rest_aux:w #1#
+ {
+ \__etl_unexpanded:w {#1}
+ \__etl_act_unexpanded_rest_aux:n
+ }
+\cs_new:Npn \__etl_act_unexpanded_rest_aux:n #1
+ {
+ \__etl_act_if_end:w #1 \__etl_act_unexpanded_rest_done:w \s__etl_stop
+ { \__etl_unexpanded:w {#1} }
+ \__etl_act_unexpanded_rest_aux:w
+ }
+\cs_new:Npn \__etl_act_unexpanded_rest_done:w
+ \s__etl_stop #1 \__etl_act_unexpanded_rest_aux:w
+ . \s__etl_stop #2#3#4#5
+ \__etl_act_result:n #6#7
+ {}
\cs_new:Npn \etl_act_status:n #1 #2 \s__etl_stop #3
{ #2 \s__etl_stop {#1} }
\cs_new:Npn \etl_act_put_back:n #1 #2 \__etl_act:w { #2 \__etl_act:w #1 }
@@ -214,6 +229,33 @@
{ \__etl_unexpanded:w { #1 #3 } }
\cs_new:Npn \etl_act_break_post:n #1 #2 \__etl_act_result:n #3#4
{ \__etl_unexpanded:w { #3 #1 } }
+\cs_new:Npn \etl_act_apply_to_rest:n #1
+ {
+ \__etl_expanded:w { \__etl_unexpanded:w {#1} { \if_false: }} \fi:
+ \__etl_act_get_rest:w \prg_do_nothing:
+ }
+\cs_new:Npn \__etl_act_get_rest:w #1 \__etl_act:w #2#
+ {
+ \__etl_unexpanded:w {#2}
+ \__etl_act_get_rest_aux:nn {#1}
+ }
+\cs_new:Npn \__etl_act_get_rest_aux:nw #1 #2#
+ {
+ \__etl_unexpanded:w {#2}
+ \__etl_act_get_rest_aux:nn {#1}
+ }
+\cs_new:Npn \__etl_act_get_rest_aux:nn #1#2
+ {
+ \__etl_act_if_end:w #2 \__etl_act_get_rest_done:w \s__etl_stop
+ { \__etl_unexpanded:w {#2} }
+ \__etl_act_get_rest_aux:nw {#1}
+ }
+\cs_new:Npn \__etl_act_get_rest_done:w \s__etl_stop #1 \__etl_act_get_rest_aux:nw #2
+ {
+ \if_false: {{ \fi: } \exp_after:wN }
+ #2
+ \__etl_act:w { \s__etl_stop }
+ }
\exp_args:Nno \use:n { \cs_new:Npn \etl_token_if_eq:NNTF #1#2 }
{
\token_if_eq_meaning:NNT {#1} {#2} { \str_if_eq:nnT #1#2 \use_ii:nnn }
@@ -477,10 +519,7 @@
\exp_args:Nno \use:n { \cs_new:Npn \etl_token_replace_once:nNn #1#2#3 }
{
\etl_act:nnnnnn
- {
- \__etl_token_replace:NnnN #2
- { \etl_act_switch_normal:n \__etl_act_unexpanded_normal:nN }
- }
+ { \__etl_token_replace:NnnN #2 \__etl_act_unexpanded_rest:w }
\__etl_act_unexpanded_space:n
\__etl_act_unexpanded_group:nn
\use_none:nn
@@ -494,7 +533,7 @@
\__etl_replace_space:n
\__etl_replace_group:nn
\__etl_replace_final:nn
- { {#2} {#2} {} {#3} \scan_stop: }
+ { {#2} {#2} {} {#3} \prg_do_nothing: }
{#1}
}
\exp_args:Nno \use:n { \cs_new:Npn \__etl_replace_put_back:nnnN #1#2#3#4 }
@@ -539,15 +578,8 @@
\__etl_if_empty:nTF {#2}
{
\__etl_unexpanded:w {#5}
- \__etl_if_mark:nTF {#6}
- {
- \etl_act_switch:nnn
- \__etl_act_unexpanded_normal:nN
- \__etl_act_unexpanded_space:n
- \__etl_act_unexpanded_group:nn
- \etl_act_status:n { {} {} {} {} #6 }
- }
- { \etl_act_status:n { {#3} {#3} {} {#5} #6 } }
+ #6
+ \etl_act_status:n { {#3} {#3} {} {#5} #6 }
}
{ \etl_act_status:n { {#2} {#3} { #4 #7 } {#5} #6 } }
}
@@ -571,15 +603,8 @@
\__etl_if_empty:nTF {#1}
{
\__etl_unexpanded:w {#4}
- \__etl_if_mark:nTF {#5}
- {
- \etl_act_switch:nnn
- \__etl_act_unexpanded_normal:nN
- \__etl_act_unexpanded_space:n
- \__etl_act_unexpanded_group:nn
- \etl_act_status:n { {} {} {} {} #5 }
- }
- { \etl_act_status:n { {#2} {#2} {} {#4} #5 } }
+ #5
+ \etl_act_status:n { {#2} {#2} {} {#4} #5 }
}
{ \etl_act_status:n { {#1} {#2} { #3 ~ } {#4} #5 } }
}
@@ -602,15 +627,8 @@
\__etl_if_empty:nTF {#2}
{
\__etl_unexpanded:w {#5}
- \__etl_if_mark:nTF {#6}
- {
- \etl_act_switch:nnn
- \__etl_act_unexpanded_normal:nN
- \__etl_act_unexpanded_space:n
- \__etl_act_unexpanded_group:nn
- \etl_act_status:n { {} {} {} {} #6 }
- }
- { \etl_act_status:n { {#3} {#3} {} {#5} #6 } }
+ #6
+ \etl_act_status:n { {#3} {#3} {} {#5} #6 }
}
{ \etl_act_status:n { {#2} {#3} { #4 {#7} } {#5} #6 } }
}
@@ -627,7 +645,7 @@
\__etl_replace_space:n
\__etl_replace_group_deep:nn
\__etl_replace_final:nn
- { {#2} {#2} {} {#3} \scan_stop: }
+ { {#2} {#2} {} {#3} \prg_do_nothing: }
{#1}
}
\cs_new:Npn \__etl_replace_group_deep:nn #1
@@ -679,7 +697,7 @@
\__etl_replace_space:n
\__etl_replace_group:nn
\__etl_replace_final:nn
- { {#2} {#2} {} {#3} \s__etl_mark }
+ { {#2} {#2} {} {#3} \__etl_act_unexpanded_rest:w }
{#1}
}
\exp_args:Nno \use:n { \cs_new_protected:Npn \etl_new_if_in:Nnn #1#2#3 }
@@ -806,6 +824,7 @@
}}
}
}
+\cs_undefine:N \__etl_act:nnnnnnn
%%
%%
%% End of file `etl.sty'.