blob: bbdc6d4890ac12b7990f8d96d73e83c9997ec9e5 (
plain)
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
|
%D \module
%D [ file=core-two, % moved from core-uti
%D version=2006.09.24,
%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.
\unprotect
\registerctxluafile{core-two}{1.001}
\appendtoks
\immediatewriteutilitytua{if not job.twopass then job.twopass = { } end}%
\immediatewriteutilitytua{local tp = job.twopass}%
\to \everyopenutilities
%D I'm not that sure if this behaves exactly like mkii. This needs a cleanup.
% \def\immediatesavetwopassdata #1#2#3{\immediatewriteutilitycommand{\twopassentry{#1}{#2}{#3}}}
% \def\savetwopassdata #1#2#3{\writeutilitycommand{\twopassentry{#1}{#2}{#3}}}
% \def\lazysavetwopassdata #1#2#3{\expanded{\writeutilitycommand{\noexpand\twopassentry{#1}{#2}{#3}}}} % expanded !
% \def\savetaggedtwopassdata #1#2#3#4{\immediatewriteutilitycommand{\twopassentry{#1}{#2}{#3::#4}}}
% \def\lazysavetaggedtwopassdata#1#2#3#4{\expanded{\writeutilitycommand{\noexpand\twopassentry{#1}{#2}{#3::#4}}}} % expanded !
\def\immediatesavetwopassdata #1#2#3{\expanded{\immediatewriteutilitytua{ti(tp['#1'],"#3")}}}
\def\savetwopassdata #1#2#3{\expanded{\writeutilitytua {ti(tp['#1'],"#3")}}}
\def\lazysavetwopassdata #1#2#3{\expanded{\writeutilitytua {ti(tp['#1'],"#3")}}}
\def\savetaggedtwopassdata #1#2#3#4{\expanded{\immediatewriteutilitytua{tp['#1']['#3']="#4"}}}
\def\lazysavetaggedtwopassdata #1#2#3#4{\expanded{\writeutilitytua {tp['#1']['#3']="#4"}}}
% temp hack: needs a proper \starteverytimeluacode
\def\dodefinetwopasslist#1%
{\ctxlua{job.definetwopassdata('#1')}%
\immediatewriteutilitytua{job.definetwopassdata('#1')}}
\def\definetwopasslist#1%
{\dodefinetwopasslist{#1}%
\doglobal\addtocommalist{#1}\alltwopasslists}
\appendtoks
\processcommacommand[\alltwopasslists]\dodefinetwopasslist
\globallet\alltwopasslists\empty
\to \everyopenutilities
\def\testtwopassdata
{\ifx\twopassdata\empty\twopassdatafoundfalse\else\twopassdatafoundtrue\fi}
\def\gettwopassdata#1%
{\edef\twopassdata{\ctxlua{job.gettwopassdata("#1")}}\testtwopassdata}
\def\checktwopassdata#1%
{\edef\twopassdata{\ctxlua{job.checktwopassdata("#1")}}\testtwopassdata}
\def\findtwopassdata#1#2%
{\edef\twopassdata{\ctxlua{job.findtwopassdata("#1","#2")}}\testtwopassdata}
\let\getfirsttwopassdata\checktwopassdata
\def\getlasttwopassdata#1%
{\edef\noftwopassitems{\ctxlua{job.noftwopassitems("#1")}}%
\edef\twopassdata {\ctxlua{job.getlasttwopassdata("#1")}}%
\testtwopassdata}
\def\getfromtwopassdata#1#2%
{\edef\twopassdata{\ctxlua{job.getfromtwopassdata("#1",#2)}}\testtwopassdata}
\def\gettwopassdatalist
{\getnamedtwopassdatalist\twopassdatalist}
\def\getnamedtwopassdatalist#1#2% \cs tag
{\edef#1{\ctxlua{job.twopassdatalist("#2")}}}
\def\doifelseintwopassdata#1#2% tag dat
{\ctxlua{job.doifelseintwopassdata("#1","#2"))}}
\protect \endinput
|