1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
%D \module
%D [ file=core-two, % moved from core-uti
%D version=1997.03.31, % stripped down 2023-03-21
%D title=\CONTEXT\ Core Macros,
%D subtitle=Two Pass Data,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
%D The public interface is replaced by datasets and two pass data is now private
%D to the engine. For the moment we keep some commands commented. The unused
%D (second) argument is an inheritance from \MKII. If needed we can bring back
%D a compatible interface.
\writestatus{loading}{ConTeXt Core Macros / Two Pass Data}
\unprotect
\registerctxluafile{core-two}{autosuffix}
% %D This is a rather old mechanism which has not changed much over time, apart from
% %D adding a few more selectors. This code used to be part of \type {core-uti}. The
% %D following examples demonstrate 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
%
% %D The next code can be simplified (read: defined at the \LUA\ end) but we never use this
% %D mechanism which has been replaced by datasets so it's not worth the effort.
%
% \permanent\def\immediatesavetwopassdata #1#2#3{\normalexpanded{\noexpand\clf_savetwopassdata{#1}{#3}}}
% \permanent\def \lazysavetwopassdata #1#2#3{\normalexpanded{\noexpand\ctxlatecommand{savetwopassdata("#1","#3")}}}
% \permanent\let \savetwopassdata \lazysavetwopassdata
% \permanent\def \savetaggedtwopassdata#1#2#3#4{\normalexpanded{\noexpand\clf_savetaggedtwopassdata{#1}{#3}{#4}}}
% \permanent\def\lazysavetaggedtwopassdata#1#2#3#4{\normalexpanded{\noexpand\ctxlatecommand{savetaggedtwopassdata("#1","#3","#4")}}}
%
% % temp hack: needs a proper \starteverytimeluacode
%
% \setfalse\twopassdatafound
%
% \mutable\lettonothing\twopassdata
% \mutable\lettonothing\twopassdatalist
%
% \mutable\let\noftwopassitems\!!zeropoint
%
% \def\syst_twopass_check % can be delegated to lua once obsolete is gone
% {\ifempty\twopassdata
% \setfalse\twopassdatafound
% \else
% \settrue\twopassdatafound
% \fi}
%
% \permanent\protected\def\definetwopasslist #1{\clf_definetwopasslist{#1}}
% \permanent\protected\def\gettwopassdata #1{\edef\twopassdata {\clf_gettwopassdata {#1}}\syst_twopass_check}
% \permanent\protected\def\checktwopassdata #1{\edef\twopassdata {\clf_checktwopassdata {#1}}\syst_twopass_check}
% \permanent\protected\def\findtwopassdata #1#2{\edef\twopassdata {\clf_findtwopassdata {#1}{#2}}\syst_twopass_check}
% \permanent\protected\def\getfirsttwopassdata #1{\edef\twopassdata {\clf_getfirsttwopassdata {#1}}\syst_twopass_check}
% \permanent\protected\def\getlasttwopassdata #1{\edef\twopassdata {\clf_getlasttwopassdata {#1}}%
% \edef\noftwopassitems{\clf_counttwopassdata {#1}}\syst_twopass_check}
% \permanent\protected\def\getnamedtwopassdatalist#1#2{\edef #1{\clf_gettwopassdatalist {#2}}}
% \permanent\protected\def\gettwopassdatalist #1{\edef\twopassdatalist{\clf_gettwopassdatalist {#1}}}
%
% \permanent\protected\def\doifelseintwopassdata #1#2{\clf_doifelseintwopassdata{#1}{#2}}
%
% \aliased\let\doifintwopassdataelse\doifelseintwopassdata
% \aliased\let\getfromtwopassdata \findtwopassdata
\protect \endinput
|