summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-10-25 22:26:36 +0000
committerKarl Berry <karl@freefriends.org>2015-10-25 22:26:36 +0000
commit2e5f14f60a516e247773eb44e16fdf71b24ffc6b (patch)
treedcf766a159ceb803ff37d6fc6093f14de9a57741 /Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
parentb21104f52f6a326c74adaf89be9b55745d4e65ba (diff)
lisp-on-tex (25oct15)
git-svn-id: svn://tug.org/texlive/trunk@38706 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty99
1 files changed, 99 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
new file mode 100644
index 00000000000..03b278d3865
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
@@ -0,0 +1,99 @@
+% wrapper for l3regex
+\RequirePackage{l3regex}
+
+% \regex_match:nnTF
+\@lisp@env@add@global\regMatch{\@tlabel@func{\@lisp@func@check@args{2}{\@lisp@regex@match}}}
+\ExplSyntaxOn
+\cs_new:Npn \lot_regex_match:Nnn #1#2#3 {
+ \regex_match:nnTF{#2}{#3}{\gdef#1{\@tlabel@bool{t}}}{\gdef#1{\@tlabel@bool{f}}}
+}
+\cs_new_eq:NN \@lisp@regex@match@ \lot_regex_match:Nnn
+\ExplSyntaxOff
+%TODO: error handling
+\def\@lisp@regex@match#1\@tlabel@string#2\@tlabel@string#3{\@lisp@regex@match@#1{#2}{#3}}
+
+% \regex_extract_all
+\@lisp@env@add@global\regExtract{\@tlabel@func{\@lisp@func@check@args{2}{\@lisp@regex@extract}}}
+\ExplSyntaxOn
+\seq_new:N \lot_regex_extract_seq
+\cs_new:Npn \lot_regex_extract:nnN #1#2#3{
+ \regex_extract_all:nnN{#1}{#2}\lot_regex_extract_seq
+ \seq_map_variable:NNn \lot_regex_extract_seq \lot_regex_tmp
+ {\@lisp@regex@add@sep@result#3\lot_regex_tmp}}
+\cs_new_eq:NN \@lisp@regex@extract@ \lot_regex_extract:nnN
+\ExplSyntaxOff
+\def\@lisp@regex@add@sep@result#1#2{\expandafter\@lisp@regex@add@sep@result@\expandafter#1\expandafter{#2}}
+\def\@lisp@regex@add@sep@result@#1#2{\expandafter\def\expandafter#1\expandafter{#1{#2}}}
+\def\@lisp@regex@add@typelabel#1#2{%
+ \gdef#2{}%
+ \@tfor\@lisp@regex@tmp:=#1\do{%
+ \begingroup
+ \toks0\expandafter{\@lisp@regex@tmp}%
+ \toks1\expandafter{#2}%
+ \xdef#2{\the\toks1 \noexpand\@tlabel@string{\the\toks0}}%
+ \endgroup}}
+\def\@lisp@regex@extract#1\@tlabel@string#2\@tlabel@string#3{%
+ \def#1{}%
+ \@lisp@regex@extract@{#2}{#3}#1%
+ \expandafter\@lisp@regex@add@typelabel\expandafter{#1}#1%
+ \expandafter\@lisp@prim@list@pre\expandafter#1#1\relax\relax}
+
+
+% \regex_extract_once
+\@lisp@env@add@global\regMatchResult{\@tlabel@func{\@lisp@func@check@args{2}{\@lisp@regex@extract@once}}}
+\ExplSyntaxOn
+\seq_new:N \lot_regex_extract_once_seq
+\cs_new:Npn \lot_regex_extract_once:nnN #1#2#3{
+ \regex_extract_once:nnN{#1}{#2}\lot_regex_extract_once_seq
+ \seq_map_variable:NNn \lot_regex_extract_once_seq \lot_regex_tmp
+ {\@lisp@regex@add@sep@result#3\lot_regex_tmp}}
+\cs_new_eq:NN \@lisp@regex@extract@once@ \lot_regex_extract_once:nnN
+\ExplSyntaxOff
+\def\@lisp@regex@extract@once#1\@tlabel@string#2\@tlabel@string#3{%
+ \def#1{}%
+ \@lisp@regex@extract@once@{#2}{#3}#1%
+ \expandafter\@lisp@regex@add@typelabel\expandafter{#1}#1%
+ \expandafter\@lisp@prim@list@pre\expandafter#1#1\relax\relax}
+
+% \regex_split
+\@lisp@env@add@global\regSplit{\@tlabel@func{\@lisp@func@check@args{2}{\@lisp@regex@split}}}
+\ExplSyntaxOn
+\seq_new:N \lot_regex_split_seq
+\cs_new:Npn \lot_regex_split:nnN #1#2#3{
+ \regex_split:nnN{#1}{#2}\lot_regex_split_seq
+ \seq_map_variable:NNn \lot_regex_split_seq \lot_regex_tmp
+ {\@lisp@regex@add@sep@result#3\lot_regex_tmp}}
+\cs_new_eq:NN \@lisp@regex@split@ \lot_regex_split:nnN
+\ExplSyntaxOff
+\def\@lisp@regex@split#1\@tlabel@string#2\@tlabel@string#3{%
+ \def#1{}%
+ \@lisp@regex@split@{#2}{#3}#1%
+ \expandafter\@lisp@regex@add@typelabel\expandafter{#1}#1%
+ \expandafter\@lisp@prim@list@pre\expandafter#1#1\relax\relax}
+
+
+
+
+% \regex_replace_once
+\@lisp@env@add@global\regReplaceOnce{\@tlabel@func{\@lisp@func@check@args{3}{\@lisp@regex@replace@once}}}
+\ExplSyntaxOn
+\cs_new_eq:NN \@lisp@regex@replace@once@ \regex_replace_once:nnN
+\ExplSyntaxOff
+%TODO: error handling
+\def\@lisp@regex@replace@once#1\@tlabel@string#2\@tlabel@string#3\@tlabel@string#4{%
+ \def#1{#4}%
+ \@lisp@regex@replace@once@{#2}{#3}#1%
+ \expandafter\gdef\expandafter#1\expandafter{%
+ \expandafter\@tlabel@string\expandafter{#1}}}
+
+% \regex_replace_all
+\@lisp@env@add@global\regReplaceAll{\@tlabel@func{\@lisp@func@check@args{3}{\@lisp@regex@replace@all}}}
+\ExplSyntaxOn
+\cs_new_eq:NN \@lisp@regex@replace@all@ \regex_replace_all:nnN
+\ExplSyntaxOff
+%TODO: error handling
+\def\@lisp@regex@replace@all#1\@tlabel@string#2\@tlabel@string#3\@tlabel@string#4{%
+ \def#1{#4}%
+ \@lisp@regex@replace@all@{#2}{#3}#1%
+ \expandafter\gdef\expandafter#1\expandafter{%
+ \expandafter\@tlabel@string\expandafter{#1}}} \ No newline at end of file