summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/core-two.mkiv
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