summaryrefslogtreecommitdiff
path: root/tex/context/base/core-two.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-two.tex')
-rw-r--r--tex/context/base/core-two.tex102
1 files changed, 102 insertions, 0 deletions
diff --git a/tex/context/base/core-two.tex b/tex/context/base/core-two.tex
new file mode 100644
index 000000000..ebe601f19
--- /dev/null
+++ b/tex/context/base/core-two.tex
@@ -0,0 +1,102 @@
+%D \module
+%D [ file=core-two, % moved from core-uti
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Two Pass Data,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Two Pass Data}
+
+%D This is a rather old mechanism which has not changed much over
+%D time, apart from adding a few more selectors. This code used
+%D to be part of \type {core-uti}. The following examples demonstrate
+%D the interface.
+%D
+%D \startbuffer
+%D \definetwopasslist{test-1}
+%D
+%D \gettwopassdatalist{test-1} [\twopassdatalist=]
+%D \checktwopassdata {test-1} [\twopassdata=]
+%D \checktwopassdata {test-1} [\twopassdata=]
+%D \gettwopassdata {test-1} [\twopassdata=]
+%D \gettwopassdata {test-1} [\twopassdata=]
+%D
+%D \definetwopasslist{test-2}
+%D
+%D \lazysavetwopassdata{test-2}{1}{x}
+%D \lazysavetwopassdata{test-2}{2}{y}
+%D \lazysavetwopassdata{test-2}{3}{z}
+%D
+%D \gettwopassdatalist{test-2} [\twopassdatalist=x,y,z]
+%D \checktwopassdata {test-2} [\twopassdata=x]
+%D \checktwopassdata {test-2} [\twopassdata=x]
+%D \gettwopassdata {test-2} [\twopassdata=x]
+%D \gettwopassdata {test-2} [\twopassdata=y]
+%D \gettwopassdata {test-2} [\twopassdata=z]
+%D \gettwopassdata {test-2} [\twopassdata=]
+%D
+%D \definetwopasslist{test-3}
+%D
+%D \lazysavetaggedtwopassdata{test-3}{1}{x}{a}
+%D \lazysavetaggedtwopassdata{test-3}{2}{y}{b}
+%D \lazysavetaggedtwopassdata{test-3}{3}{z}{c}
+%D
+%D \findtwopassdata{test-3}{x} [\twopassdata=a]
+%D \findtwopassdata{test-3}{y} [\twopassdata=b]
+%D \findtwopassdata{test-3}{z} [\twopassdata=c]
+%D \findtwopassdata{test-3}{w} [\twopassdata=]
+%D
+%D \definetwopasslist{test-4}
+%D
+%D \lazysavetwopassdata{test-4}{1}{A}
+%D \lazysavetwopassdata{test-4}{2}{B}
+%D \lazysavetwopassdata{test-4}{3}{C}
+%D
+%D \getfirsttwopassdata{test-4} [\twopassdata=A]
+%D \getlasttwopassdata {test-4} [\twopassdata=C]
+%D \getfirsttwopassdata{test-4} [\twopassdata=A]
+%D \getlasttwopassdata {test-4} [\twopassdata=C]
+%D \getfromtwopassdata {test-4}{1} [\twopassdata=A]
+%D \getfromtwopassdata {test-4}{3} [\twopassdata=C]
+%D \getfromtwopassdata {test-4}{2} [\twopassdata=B]
+%D \stopbuffer
+%D
+%D \getbuffer \typebuffer
+
+\unprotect
+
+\let\alltwopasslists\empty
+\let\twopassentry \empty
+\let\twopassdata \empty
+\let\twopassdatalist\empty
+
+\newif\iftwopassdatafound
+
+\let\savetwopassdata \gobblethreearguments
+\let\lazysavetwopassdata \gobblethreearguments
+\let\savetaggedtwopassdata \gobblefourarguments
+\let\lazysavetaggedtwopassdata\gobblefourarguments
+
+\let\twopassentry \gobblethreearguments % permits loading a MK II file
+\let\loadtwopassdata\relax % permits loading a MK II file
+
+\let\definetwopasslist\gobbleoneargument
+
+\def\gettwopassdata #1{\let\twopassdata \empty \twopassdatafoundfalse}
+\def\checktwopassdata #1{\let\twopassdata \empty \twopassdatafoundfalse}
+\def\findtwopassdata #1#2{\let\twopassdata \empty \twopassdatafoundfalse}
+\def\getlasttwopassdata #1{\let\twopassdata \empty \twopassdatafoundfalse}
+\def\getfromtwopassdata #1#2{\let\twopassdata \empty \twopassdatafoundfalse}
+\def\gettwopassdatalist #1{\let\twopassdatalist\empty \twopassdatafoundfalse}
+\def\getnamedtwopassdatalist#1#2{\let#1 \empty \twopassdatafoundfalse}
+\def\doifelseintwopassdata #1#2{\secondoftwoarguments}
+
+\loadmarkfile{core-two}
+
+\protect \endinput