From af0a12985674bb2c95947a4c9c439887b679f168 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 26 Feb 2007 01:15:02 +0000 Subject: new latex package qstest (22feb07) git-svn-id: svn://tug.org/texlive/trunk@3990 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/qstest/makematch.sty | 134 +++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/qstest/makematch.sty (limited to 'Master/texmf-dist/tex/latex/qstest/makematch.sty') diff --git a/Master/texmf-dist/tex/latex/qstest/makematch.sty b/Master/texmf-dist/tex/latex/qstest/makematch.sty new file mode 100644 index 00000000000..c57a8a66b22 --- /dev/null +++ b/Master/texmf-dist/tex/latex/qstest/makematch.sty @@ -0,0 +1,134 @@ +%% +%% This is file `makematch.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% makematch.dtx (with options: `package,etex') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from makematch.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file makematch.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% Copyright (C) 2006, 2007 QuinScape GmbH +%% http://www.quinscape.de +\NeedsTeXFormat{LaTeX2e} +\def\next$#1: #2.dtx #3 #4-#5-#6 #7${% + \ProvidesPackage{#2}[#4/#5/#6 1.#3 Pattern matching with + wildcards] +} +\next +$Id: makematch.dtx 7925 2007-02-23 14:22:19Z dkastrup $ +\newcommand\MakeMatcher[3][\relax]{% + \edef#2{\detokenize{#3}}% + \def\qst@mmtmp##1##2#1{\qst@parseonecase{##1}{##2}}% + \let\qst@comma= #1\relax + \edef#2##1{\noexpand\qst@setup##1% + \expandafter\qst@parsestart\expandafter\@firstoftwo + #2#1{#1\m@ne}\noexpand\qst@finish}} +\long\def\qst@matchalways#1#2#3{#2} +\long\def\qst@matchnever#1#2#3{#3} +\def\qst@setup{\let\MatchedTarget\@undefined + \let\qst@finish\@secondoftwo + \futurelet\qst@matchlist\qst@setupii} +\def\qst@setupii{\ifcase + \ifcat\noexpand\qst@matchlist\bgroup\@ne\fi + \ifx\qst@matchlist[\tw@\fi %] + \m@ne + \or + \expandafter\MakeMatchTarget\expandafter\qst@matchlist + \or + \expandafter\qst@setupiii + \else \expandafter\@gobble + \fi} +\def\qst@setupiii[#1]{\MakeMatchTarget[{#1}]\qst@matchlist} +\def\qst@parsestart#1#2{% + \ifcase + \ifx\qst@comma#2\@ne\fi + \ifx\qst@comma\relax + \else\ifx!#2#1\tw@\@ne\fi + \fi + \thr@@ + \or + \expandafter\qst@parsestart + \expandafter\@firstoftwo + \or + \expandafter\qst@parsestart + \expandafter\@secondoftwo + \or + \expandafter\qst@mmtmp + \expandafter#1% + \expandafter#2% + \fi +} +\def\qst@afterfi#1#2\fi{\fi#1} +\def\qst@parseonecase#1#2{% + \noexpand\qst@checkname {\qst@parsewild#2*\,23456789*}% + \noexpand#1\qst@parsestart\@firstoftwo} +\def\qst@parsewild#1*#2\,#3#4*{% + #1% + \ifx\,#2\,% + \else + #####3% + \qst@afterfi{\qst@skipwild#2\,#4*}% + \fi} +\def\qst@skipwild#1*#2\,{% + #1% + \ifcase + \ifx *#1*\ifx\,#2\,\else \@ne \fi \fi + \tw@ + \or + \expandafter\qst@skipwild + \or + \expandafter\qst@parsewild\expandafter*% + \fi#2\,} +\def\qst@checkname#1{% + \def\qst@mmtmp##1\,#1\,{#1\,\@nil}% + \expandafter\expandafter\expandafter\qst@checknameii + \expandafter\qst@mmtmp + \expandafter\,\qst@matchlist\,#1\,\@nil} +\def\qst@checknameii#1\,#2\@nil#3{% + \ifcase + \ifx\@nil#3\@ne\fi + \ifx\@nil#2\@nil \tw@\fi + \m@ne + \or + \expandafter\qst@checknamenomatch + \or + \expandafter\qst@checknamematch + \fi \expandafter\qst@checknameii\qst@mmtmp#1\,#2#3} +\def\qst@checknamenomatch#1\@nil#2{} +\def\qst@checknamematch#1\qst@mmtmp#2\,#3\@nil{% + \def\MatchedTarget{#2}% + \let\qst@finish} +\def\RemoveMatched#1{\ifx#1\MatchedTarget + \let#1\@empty + \else + \expandafter\def\expandafter\qst@mmtmp + \expandafter##\expandafter1\expandafter\,\MatchedTarget\,{##1\,}% + \expandafter\def\expandafter#1\expandafter{% + \romannumeral\expandafter\expandafter\expandafter\z@ + \expandafter\qst@remmat + \romannumeral\expandafter\expandafter\expandafter\z@ + \expandafter\qst@mmtmp\expandafter\,#1\,\@nil}% + \fi} +\def\qst@remmat\,#1\,\@nil{#1} +\newcommand\MakeMatchTarget[3][\relax]{% + \def\qst@mmtmp##1#1##2{##1\noexpand\,\qst@mmtmp##2}% + \edef#2{\expandafter\qst@mmtmp\expandafter + \@gobbletwo\expandafter#1\detokenize{#3}\iffalse#1\fi}% +} +\endinput +%% +%% End of file `makematch.sty'. -- cgit v1.2.3