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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
-- SPDX-License-Identifier: MIT
---@meta
--- A filter callback.
---
--- It takes a `State` as the first paramter followed by any number of args.
---
--- Returns any value.
---
---@alias Filter fun(state: State, ...): any
--- A test callback
---
--- It takes a `State` as the first parameter followed by any number of args.
---
--- Must return a boolean
---
---@alias Test fun(state, ...): boolean
--- Determines how undefined variables are handled.
---
---@alias UndefinedBehavior
---| "chainable"
---| "lenient"
---| "semi-strict"
---| "strict"
--- Determines how autoescaping is applied
---
---@alias AutoEscape
---| "html"
---| "json"
---| "none"
--- Configure the syntax for the environment
---
---@class (exact) SyntaxConfig
---
---@field block_delimiters? [string, string]
---@field variable_delimiters? [string, string]
---@field comment_delimiters? [string, string]
---@field line_statement_prefix? string
---@field line_comment_prefix? string
--- A minijinja environment
---
---@class (exact) Environment: userdata
---
---@field keep_trailing_newline boolean
---@field trim_blocks boolean
---@field lstrip_blocks boolean
---@field debug boolean
---@field fuel number
---@field recursion_limit number
---@field undefined_behavior UndefinedBehavior
Environment =
--- Create a new environment
---
---@return Environment
--- Add a template
---
---@param name string
---@param source string
--- Remove a template
---
---@param name string
--- Remove all templates
--- Return a table of all undeclared template variables
---
---@param nested boolean
---
---@return table
--- Register a template loader as source of templates
---
---@param loader fun(name: string): string|nil
--- Sets a callback to join template paths
---
---@param callback fun(name: string, parent: string): string
--- Sets a callback invoked for unknown methods on objects.
---
---@param callback fun(state: State, value: any, method: string)
--- Sets a new function to select the default auto escaping.
---
---@param callback fun(name: string): AutoEscape
--- Sets a different formatter function.
---
---@param formatter fun(state: State, value: any)
--- Sets the syntax for the environment.
---
---@param syntax SyntaxConfig
--- Render a template
---
---@param name string
---@param ctx table
---
---@return string
--- Render a string
---
---@param source string
---@param ctx table
---@param name? string
---
---@return string
--- Evaluate an expression
---
---@param source string
---@param ctx table
---
---@return any
--- Add a filter
---
---@param name string
---@param filter Filter
---@param pass_state? boolean pass a State as the first arg
--- Remove a filter
---
---@param name string
--- Add a test
---
---@param name string
---@param test Test
---@param pass_state? boolean pass a State as the first arg
--- Remove a test
---
---@param name string
--- Add a global value
---
---@param name string
---@param global any
---@param pass_state? boolean pass a State as the first arg
--- Remove a global value
---
---@param name string
--- Get a list of all global variables
---
---@return any[]
--- A minijinja state.
---
--- Only accesible within filters, tests, and global functions.
---
---@class (exact) State: userdata
State =
--- Returns the name of the current template.
---
---@return string
--- Returns the current value of the auto escape flag.
---
---@return AutoEscape
--- Returns the current undefined behavior.
---
---@return UndefinedBehavior
--- Returns the name of the innermost block.
---
---@return string
--- Looks up a variable by name in the context.
---
---@param name string
---
---@return any
--- Looks up a global macro and calls it.
---
---@param name string
---@param ... any
---
---@return string
--- Returns a list of the names of all exports (top-level variables).
---
---@return string[]
--- Returns a list of all known variables.
---
---@return string[]
--- Invokes a filter with some arguments.
---
---@param filter string
---@param ... any
---
---@return any
--- Invokes a test function on a value.
---
---@param test string
---@param ... any
---
---@return boolean
--- Formats a value to a string using the formatter on the environment.
---
---@param value any
---
---@return string
--- Returns the fuel levels.
---
---@return [number, number]
--- Looks up a temp and returns it.
---
---@param name string
---
---@return any
--- Inserts a temp and returns the old temp.
---
---@param name string
---@param temp any
---
---@return any
--- Get a temp or call func to add the value
---
---@param name string
---@param func fun(): any
---
---@return any