1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Lua Macros Initialization}
15
16\unprotect
17
18
19
20
21
22
23
24\ifdefined\obeyluatokens \else \let\obeyluatokens\relax \fi
25
26
27
28\permanent\protected\lettonothing\stoplua
29\permanent\protected\lettonothing\stopluacode
30
31
32
33
34\permanent\protected\def\startlua % \stoplua
35 {\begingroup
36 \luat_start_lua_indeed}
37
38\def\luat_start_lua_indeed#1\stoplua
39 {\normalexpanded{\endgroup\noexpand\directlua{#1}}}
40
41\permanent\protected\def\startluacode % \stopluacode
42 {\begingroup
43 \obeyluatokens
44 \luat_start_lua_code_indeed}
45
46\def\luat_start_lua_code_indeed#1\stopluacode
47
48 {\directlua{#1\beginlocalcontrol\endgroup\endlocalcontrol}}
49
50
51
52\ifdefined\obeylines \else \let\obeylines \relax \fi
53\ifdefined\obeyedline \else \let\obeyedline \relax \fi
54\ifdefined\obeyspaces \else \let\obeyspaces \relax \fi
55\ifdefined\obeyedspace \else \let\obeyedspace \relax \fi
56
57\newtoks\everyluacode
58
59
60
61\pushoverloadmode
62
63
64
65 \permanent\protected\def\superexplicitdiscretionary
66 {\begingroup
67 \hyphenationmode\explicithyphenationmodecode\explicitdiscretionary
68 \endgroup}
69
70
71
72 \aliased\let\-\explicitdiscretionary
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88\popoverloadmode
89
90\ifdefined\n \else \mutable\def\n{n} \fi \ifdefined\r \else \mutable\def\r{r} \fi
91\ifdefined\f \else \mutable\def\f{f} \fi \ifdefined\t \else \mutable\def\t{t} \fi
92\ifdefined\a \else \mutable\def\a{a} \fi \ifdefined\b \else \mutable\def\b{b} \fi
93\ifdefined\v \else \mutable\def\v{v} \fi \ifdefined\s \else \mutable\def\s{s} \fi
94
95\ifdefined\+ \else \mutable\def\+{} \fi \ifdefined\- \else \mutable\def\-{} \fi
96
97\ifdefined\? \else \mutable\def\?{?} \fi \ifdefined\! \else \mutable\def\!{!} \fi
98
99\ifdefined\1 \else \mutable\def\1{1} \fi \ifdefined\2 \else \mutable\def\2{2} \fi
100\ifdefined\3 \else \mutable\def\3{3} \fi \ifdefined\4 \else \mutable\def\4{4} \fi
101\ifdefined\5 \else \mutable\def\5{5} \fi \ifdefined\6 \else \mutable\def\6{6} \fi
102\ifdefined\7 \else \mutable\def\7{7} \fi \ifdefined\8 \else \mutable\def\8{8} \fi
103\ifdefined\9 \else \mutable\def\9{9} \fi \ifdefined\0 \else \mutable\def\0{0} \fi
104
105\immutable\edef\lua_letter_backslash{\string\\}
106\immutable\edef\lua_letter_bar {\string\|} \immutable\edef\lua_letter_dash {\string\-}
107\immutable\edef\lua_letter_lparent {\string\(} \immutable\edef\lua_letter_rparent {\string\)}
108\immutable\edef\lua_letter_lbrace {\string\{} \immutable\edef\lua_letter_rbrace {\string\}}
109\immutable\edef\lua_letter_squote {\string\'} \immutable\edef\lua_letter_dquote {\string\"}
110\immutable\edef\lua_letter_n {\string\n} \immutable\edef\lua_letter_r {\string\r}
111\immutable\edef\lua_letter_f {\string\f} \immutable\edef\lua_letter_t {\string\t}
112\immutable\edef\lua_letter_a {\string\a} \immutable\edef\lua_letter_b {\string\b}
113\immutable\edef\lua_letter_v {\string\v} \immutable\edef\lua_letter_s {\string\s}
114\immutable\edef\lua_letter_one {\string\1} \immutable\edef\lua_letter_two {\string\2}
115\immutable\edef\lua_letter_three {\string\3} \immutable\edef\lua_letter_four {\string\4}
116\immutable\edef\lua_letter_five {\string\5} \immutable\edef\lua_letter_six {\string\6}
117\immutable\edef\lua_letter_seven {\string\7} \immutable\edef\lua_letter_eight {\string\8}
118\immutable\edef\lua_letter_nine {\string\9} \immutable\edef\lua_letter_zero {\string\0}
119
120\everyluacode {
121 \enforced\let\\\lua_letter_backslash
122 \enforced\let\|\lua_letter_bar \enforced\let\-\lua_letter_dash
123 \enforced\let\(\lua_letter_lparent \enforced\let\)\lua_letter_rparent
124 \enforced\let\{\lua_letter_lbrace \enforced\let\}\lua_letter_rbrace
125 \enforced\let\'\lua_letter_squote \enforced\let\"\lua_letter_dquote
126 \enforced\let\n\lua_letter_n \enforced\let\r\lua_letter_r
127 \enforced\let\f\lua_letter_f \enforced\let\t\lua_letter_t
128 \enforced\let\a\lua_letter_a \enforced\let\b\lua_letter_b
129 \enforced\let\v\lua_letter_v \enforced\let\s\lua_letter_s
130 \enforced\let\1\lua_letter_one \enforced\let\2\lua_letter_two
131 \enforced\let\3\lua_letter_three \enforced\let\4\lua_letter_four
132 \enforced\let\5\lua_letter_five \enforced\let\6\lua_letter_six
133 \enforced\let\7\lua_letter_seven \enforced\let\8\lua_letter_eight
134 \enforced\let\9\lua_letter_nine \enforced\let\0\lua_letter_zero
135}
136
137\permanent\protected\def\obeyluatokens
138 {\setcatcodetable\luacatcodes
139 \expand\everyluacode}
140
141\immutable\edef\luamajorversion{\ctxwrite{LUAMINORVERSION}}
142\immutable\edef\luaminorversion{\ctxwrite{LUAMAJORVERSION}}
143
144
145
146
147
148
149
150
151
152\def\luastringsep{===}
153
154\edef\!!bs{[\luastringsep[}
155\edef\!!es{]\luastringsep]}
156
157
158
159
160
161
162
163\permanent\protected\def\setdocumentfilename #1#2{\clf_setdocumentfilename{#1}{#2}}
164\permanent \def\getdocumentfilename #1{\clf_getdocumentfilename{#1}}
165\permanent\protected\def\setdocumentargument #1#2{\clf_setdocumentargument{#1}{#2}}
166\permanent \def\getdocumentargument #1{\clf_getdocumentargument{#1}{}}
167\permanent\protected\def\setdocumentargumentdefault#1#2{\clf_setdocumentdefaultargument{#1}{#2}}
168\permanent \def\getdocumentargumentdefault#1#2{\clf_getdocumentargument{#1}{#2}}
169
170
171
172\permanent\def\doifelsedocumentargument #1{\doifelsesomething{\clf_getdocumentargument{#1}}}
173\permanent\def\doifdocumentargument #1{\doifsomething {\clf_getdocumentargument{#1}}}
174\permanent\def\doifnotdocumentargument #1{\doifnothing {\clf_getdocumentargument{#1}}}
175\permanent\def\doifelsedocumentfilename #1{\doifelsesomething{\clf_getdocumentfilename{#1}}}
176\permanent\def\doifdocumentfilename #1{\doifsomething {\clf_getdocumentfilename{#1}}}
177\permanent\def\doifnotdocumentfilename #1{\doifnothing {\clf_getdocumentfilename{#1}}}
178
179\aliased\let\doifdocumentargumentelse\doifelsedocumentargument
180\aliased\let\doifdocumentfilenameelse\doifelsedocumentfilename
181
182
183
184\permanent\def\luaexpanded#1{\luaescapestring\expandafter{\normalexpanded{#1}}}
185
186
187
188\permanent\protected\def\startluaparameterset[#1]% \stopluaparameterset
189 {\begingroup
190 \obeyluatokens
191 \luat_start_lua_parameter_set{#1}}
192
193\def\luat_start_lua_parameter_set#1#2\stopluaparameterset
194 {\ctxlua{parametersets["#1"]={#2}}
195 \endgroup}
196
197\permanent\protected\lettonothing\stopluaparameterset
198
199\permanent\def\luaparameterset#1#2{\ctxlua{parametersets["#1"]={#2} context("#1")}}
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218\permanent\def\luaconditional#1{\ifcase#1tru\else fals\fi e}
219
220
221
222
223
224
225
226\permanent\protected\def\ctxluacode
227 {\begingroup
228 \obeyluatokens
229 \catcode\leftbraceasciicode \plusone
230 \catcode\rightbraceasciicode\plustwo
231 \afterassignment\luat_lua_code
232 \scratchtoks=}
233
234
235
236
237\def\luat_lua_code
238 {\normalexpanded{\endgroup\noexpand\directlua\expandafter{\the\scratchtoks}}}
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254\installsystemnamespace{ctxfunction}
255
256\permanent\protected\def\startctxfunctiondefinition #1 % \stopctxfunctiondefinition
257 {\begingroup \obeyluatokens \luat_start_lua_function_definition_indeed{#1}}
258
259\installsystemnamespace{luafunction}
260
261\def\luat_start_lua_function_definition_indeed#1#2\stopctxfunctiondefinition
262 {\endgroup
263 \expandafter\chardef\csname\??luafunction#1\endcsname\ctxcommand{ctxfunction(\!!bs#2\!!es)}\relax
264 \edefcsname#1\endcsname{\noexpand\luafunction\csname\??luafunction#1\endcsname}}
265
266\permanent\protected\def\setctxluafunction#1#2
267 {\expandafter\chardef\csname\??luafunction#1\endcsname#2\relax
268 \edefcsname#1\endcsname{\noexpand\luafunction\csname\??luafunction#1\endcsname}}
269
270\permanent\protected\lettonothing\stopctxfunctiondefinition
271
272\permanent\protected\def\startctxfunction #1 % \stopctxfunction
273 {\begingroup \obeyluatokens \luat_start_lua_function_indeed{#1}}
274
275\def\luat_start_lua_function_indeed#1#2\stopctxfunction
276 {\endgroup\edefcsname\??ctxfunction#1\endcsname{\noexpand\luafunction\ctxcommand{ctxfunction(\!!bs#2\!!es)}\relax}}
277
278\permanent\protected\lettonothing\stopctxfunction
279
280\permanent\def\ctxfunction#1
281 {\begincsname\??ctxfunction#1\endcsname}
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296\permanent\protected\def\installctxfunction#1#2
297 {\edef\m_syst_name{\csstring#1}
298 \global\expandafter\normalluadef\csname\m_syst_name\endcsname\ctxcommand{ctxfunction(\!!bs#2\!!es,true)}\relax}
299
300\permanent\protected\def\installctxscanner#1#2
301 {\edef\m_syst_name{\csstring#1}
302 \global\expandafter\normalluadef\csname\m_syst_name\endcsname\ctxcommand{ctxscanner("\m_syst_name",\!!bs#2\!!es,true)}\relax}
303
304\permanent\protected\def\installprotectedctxfunction#1#2
305 {\edef\m_syst_name{\csstring#1}
306 \global\protected\expandafter\normalluadef\csname\m_syst_name\endcsname\ctxcommand{ctxfunction(\!!bs#2\!!es,true)}\relax}
307
308\permanent\protected\def\installprotectedctxscanner#1#2
309 {\edef\m_syst_name{\csstring#1}
310 \global\protected\expandafter\normalluadef\csname\m_syst_name\endcsname\ctxcommand{ctxscanner("\m_syst_name",\!!bs#2\!!es,true)}\relax}
311
312
313
314
315
316\permanent\protected\def\resetctxscanner#1
317 {\global\expandafter\lettonothing\csname\csstring#1\endcsname}
318
319\protect \endinput
320 |