isaacscript-common 84.1.1 → 84.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/isaacscript-common.lua +1 -1
- package/dist/lib/jsonLua.d.ts +12 -0
- package/dist/lib/jsonLua.js +701 -0
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is the custom JSON parser library called "json.lua". It is located at:
|
|
3
|
+
* https://github.com/rxi/json.lua
|
|
4
|
+
*
|
|
5
|
+
* This parser was measured to be 11.8 times faster than the vanilla parser at decoding a sample
|
|
6
|
+
* "save1.dat" file.
|
|
7
|
+
*
|
|
8
|
+
* @noSelfInFile
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export function encode(data: unknown): string;
|
|
12
|
+
export function decode(data: string): unknown;
|
|
@@ -0,0 +1,701 @@
|
|
|
1
|
+
// Created by lua.js:
|
|
2
|
+
// https://github.com/mherkender/lua.js?tab=readme-ov-file
|
|
3
|
+
|
|
4
|
+
// cspell: disable
|
|
5
|
+
|
|
6
|
+
var lua_script = (function () {
|
|
7
|
+
var tmp;
|
|
8
|
+
var G = lua_newtable2(lua_core);
|
|
9
|
+
for (var i in lua_libs) {
|
|
10
|
+
G.str[i] = lua_newtable2(lua_libs[i]);
|
|
11
|
+
}
|
|
12
|
+
G.str["arg"] = lua_newtable();
|
|
13
|
+
G.str["_G"] = G;
|
|
14
|
+
G.str["module"] = function (name) {
|
|
15
|
+
lua_createmodule(G, name, slice(arguments, 1));
|
|
16
|
+
};
|
|
17
|
+
G.str["require"] = function (name) {
|
|
18
|
+
lua_require(G, name);
|
|
19
|
+
};
|
|
20
|
+
G.str["package"].str["seeall"] = function (module) {
|
|
21
|
+
if (!module.metatable) {
|
|
22
|
+
module.metatable = lua_newtable();
|
|
23
|
+
}
|
|
24
|
+
module.metatable.str["__index"] = G;
|
|
25
|
+
};
|
|
26
|
+
{
|
|
27
|
+
var _json_1 = lua_newtable([], "_version", "0.1.2");
|
|
28
|
+
var _encode_1;
|
|
29
|
+
var _escape_char_map_1 = lua_newtable(
|
|
30
|
+
[],
|
|
31
|
+
"\\",
|
|
32
|
+
"\\",
|
|
33
|
+
'"',
|
|
34
|
+
'"',
|
|
35
|
+
"\b",
|
|
36
|
+
"b",
|
|
37
|
+
"\f",
|
|
38
|
+
"f",
|
|
39
|
+
"\n",
|
|
40
|
+
"n",
|
|
41
|
+
"\r",
|
|
42
|
+
"r",
|
|
43
|
+
"\t",
|
|
44
|
+
"t",
|
|
45
|
+
);
|
|
46
|
+
var _escape_char_map_inv_1 = lua_newtable([], "/", "/");
|
|
47
|
+
tmp = lua_call(G.str["pairs"], [_escape_char_map_1]);
|
|
48
|
+
var f_2 = tmp[0],
|
|
49
|
+
s_2 = tmp[1],
|
|
50
|
+
var_2 = tmp[2];
|
|
51
|
+
while ((tmp = lua_call(f_2, [s_2, var_2]))[0] != null) {
|
|
52
|
+
var_2 = tmp[0];
|
|
53
|
+
var _k_2 = var_2,
|
|
54
|
+
_v_2 = tmp[1];
|
|
55
|
+
tmp = null;
|
|
56
|
+
lua_tableset(_escape_char_map_inv_1, _v_2, _k_2);
|
|
57
|
+
}
|
|
58
|
+
tmp = null;
|
|
59
|
+
var _escape_char_1 = function (_c) {
|
|
60
|
+
var tmp;
|
|
61
|
+
return [
|
|
62
|
+
lua_concat(
|
|
63
|
+
"\\",
|
|
64
|
+
lua_or(lua_tableget(_escape_char_map_1, _c), function () {
|
|
65
|
+
return lua_tablegetcall(
|
|
66
|
+
G.str["string"],
|
|
67
|
+
"format",
|
|
68
|
+
["u%04x"].concat(lua_mcall(_c, "byte", [])),
|
|
69
|
+
)[0];
|
|
70
|
+
}),
|
|
71
|
+
),
|
|
72
|
+
];
|
|
73
|
+
return [];
|
|
74
|
+
};
|
|
75
|
+
var _encode_nil_1 = function (_val) {
|
|
76
|
+
var tmp;
|
|
77
|
+
return ["null"];
|
|
78
|
+
return [];
|
|
79
|
+
};
|
|
80
|
+
var _encode_table_1 = function (_val, _stack, _traversalDescription) {
|
|
81
|
+
var tmp;
|
|
82
|
+
var _res_6 = lua_newtable();
|
|
83
|
+
_stack = lua_or(_stack, function () {
|
|
84
|
+
return lua_newtable();
|
|
85
|
+
});
|
|
86
|
+
_traversalDescription = lua_or(_traversalDescription, function () {
|
|
87
|
+
return "";
|
|
88
|
+
});
|
|
89
|
+
if (lua_true(lua_tableget(_stack, _val))) {
|
|
90
|
+
lua_call(G.str["error"], ["circular reference"]);
|
|
91
|
+
}
|
|
92
|
+
lua_tableset(_stack, _val, true);
|
|
93
|
+
if (
|
|
94
|
+
!lua_eq(lua_call(G.str["rawget"], [_val, 1])[0], null) ||
|
|
95
|
+
lua_eq(lua_call(G.str["next"], [_val])[0], null)
|
|
96
|
+
) {
|
|
97
|
+
var _n_8 = 0;
|
|
98
|
+
tmp = lua_call(G.str["pairs"], [_val]);
|
|
99
|
+
var f_9 = tmp[0],
|
|
100
|
+
s_9 = tmp[1],
|
|
101
|
+
var_9 = tmp[2];
|
|
102
|
+
tmp = null;
|
|
103
|
+
while ((var_9 = lua_call(f_9, [s_9, var_9])[0]) != null) {
|
|
104
|
+
var _k_9 = var_9;
|
|
105
|
+
if (!lua_eq(lua_call(G.str["type"], [_k_9])[0], "number")) {
|
|
106
|
+
lua_call(G.str["error"], [
|
|
107
|
+
lua_concat(
|
|
108
|
+
"invalid table: mixed or invalid key types for array, excepted number, got: ",
|
|
109
|
+
lua_call(G.str["tostring"], lua_call(G.str["type"], [_k_9]))[0],
|
|
110
|
+
),
|
|
111
|
+
]);
|
|
112
|
+
}
|
|
113
|
+
_n_8 = lua_add(_n_8, 1);
|
|
114
|
+
}
|
|
115
|
+
if (!lua_eq(_n_8, lua_len(_val))) {
|
|
116
|
+
lua_call(G.str["error"], ["invalid table: sparse array"]);
|
|
117
|
+
}
|
|
118
|
+
tmp = lua_call(G.str["ipairs"], [_val]);
|
|
119
|
+
var f_13 = tmp[0],
|
|
120
|
+
s_13 = tmp[1],
|
|
121
|
+
var_13 = tmp[2];
|
|
122
|
+
while ((tmp = lua_call(f_13, [s_13, var_13]))[0] != null) {
|
|
123
|
+
var_13 = tmp[0];
|
|
124
|
+
var _i_13 = var_13,
|
|
125
|
+
_v_13 = tmp[1];
|
|
126
|
+
tmp = null;
|
|
127
|
+
var _newTraversalDescription_14 = lua_concat(
|
|
128
|
+
_traversalDescription,
|
|
129
|
+
lua_concat(lua_call(G.str["tostring"], [_i_13])[0], " - "),
|
|
130
|
+
);
|
|
131
|
+
lua_tablegetcall(
|
|
132
|
+
G.str["table"],
|
|
133
|
+
"insert",
|
|
134
|
+
[_res_6].concat(
|
|
135
|
+
lua_call(_encode_1, [_v_13, _stack, _newTraversalDescription_14]),
|
|
136
|
+
),
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
tmp = null;
|
|
140
|
+
lua_tableset(_stack, _val, null);
|
|
141
|
+
return [
|
|
142
|
+
lua_concat(
|
|
143
|
+
"[",
|
|
144
|
+
lua_concat(
|
|
145
|
+
lua_tablegetcall(G.str["table"], "concat", [_res_6, ","])[0],
|
|
146
|
+
"]",
|
|
147
|
+
),
|
|
148
|
+
),
|
|
149
|
+
];
|
|
150
|
+
} else {
|
|
151
|
+
tmp = lua_call(G.str["pairs"], [_val]);
|
|
152
|
+
var f_16 = tmp[0],
|
|
153
|
+
s_16 = tmp[1],
|
|
154
|
+
var_16 = tmp[2];
|
|
155
|
+
while ((tmp = lua_call(f_16, [s_16, var_16]))[0] != null) {
|
|
156
|
+
var_16 = tmp[0];
|
|
157
|
+
var _k_16 = var_16,
|
|
158
|
+
_v_16 = tmp[1];
|
|
159
|
+
tmp = null;
|
|
160
|
+
var _newTraversalDescription_17 = lua_concat(
|
|
161
|
+
_traversalDescription,
|
|
162
|
+
lua_concat(lua_call(G.str["tostring"], [_k_16])[0], " - "),
|
|
163
|
+
);
|
|
164
|
+
if (!lua_eq(lua_call(G.str["type"], [_k_16])[0], "string")) {
|
|
165
|
+
lua_call(G.str["error"], [
|
|
166
|
+
lua_concat(
|
|
167
|
+
'invalid table: mixed or invalid key types for object "',
|
|
168
|
+
lua_concat(
|
|
169
|
+
_newTraversalDescription_17,
|
|
170
|
+
lua_concat(
|
|
171
|
+
'", ',
|
|
172
|
+
lua_concat(
|
|
173
|
+
"excepted string, got: ",
|
|
174
|
+
lua_call(
|
|
175
|
+
G.str["tostring"],
|
|
176
|
+
lua_call(G.str["type"], [_k_16]),
|
|
177
|
+
)[0],
|
|
178
|
+
),
|
|
179
|
+
),
|
|
180
|
+
),
|
|
181
|
+
),
|
|
182
|
+
]);
|
|
183
|
+
}
|
|
184
|
+
lua_tablegetcall(G.str["table"], "insert", [
|
|
185
|
+
_res_6,
|
|
186
|
+
lua_concat(
|
|
187
|
+
lua_call(_encode_1, [
|
|
188
|
+
_k_16,
|
|
189
|
+
_stack,
|
|
190
|
+
_newTraversalDescription_17,
|
|
191
|
+
])[0],
|
|
192
|
+
lua_concat(
|
|
193
|
+
":",
|
|
194
|
+
lua_call(_encode_1, [
|
|
195
|
+
_v_16,
|
|
196
|
+
_stack,
|
|
197
|
+
_newTraversalDescription_17,
|
|
198
|
+
])[0],
|
|
199
|
+
),
|
|
200
|
+
),
|
|
201
|
+
]);
|
|
202
|
+
}
|
|
203
|
+
tmp = null;
|
|
204
|
+
lua_tableset(_stack, _val, null);
|
|
205
|
+
return [
|
|
206
|
+
lua_concat(
|
|
207
|
+
"{",
|
|
208
|
+
lua_concat(
|
|
209
|
+
lua_tablegetcall(G.str["table"], "concat", [_res_6, ","])[0],
|
|
210
|
+
"}",
|
|
211
|
+
),
|
|
212
|
+
),
|
|
213
|
+
];
|
|
214
|
+
}
|
|
215
|
+
return [];
|
|
216
|
+
};
|
|
217
|
+
var _encode_string_1 = function (_val) {
|
|
218
|
+
var tmp;
|
|
219
|
+
return [
|
|
220
|
+
lua_concat(
|
|
221
|
+
'"',
|
|
222
|
+
lua_concat(
|
|
223
|
+
lua_mcall(_val, "gsub", ['[%z\x01-\x19\\"]', _escape_char_1])[0],
|
|
224
|
+
'"',
|
|
225
|
+
),
|
|
226
|
+
),
|
|
227
|
+
];
|
|
228
|
+
return [];
|
|
229
|
+
};
|
|
230
|
+
var _encode_number_1 = function (_val) {
|
|
231
|
+
var tmp;
|
|
232
|
+
if (
|
|
233
|
+
!lua_eq(_val, _val) ||
|
|
234
|
+
lua_lte(_val, lua_unm(lua_tableget(G.str["math"], "huge"))) ||
|
|
235
|
+
lua_lte(lua_tableget(G.str["math"], "huge"), _val)
|
|
236
|
+
) {
|
|
237
|
+
lua_call(G.str["error"], [
|
|
238
|
+
lua_concat(
|
|
239
|
+
"unexpected number value '",
|
|
240
|
+
lua_concat(lua_call(G.str["tostring"], [_val])[0], "'"),
|
|
241
|
+
),
|
|
242
|
+
]);
|
|
243
|
+
}
|
|
244
|
+
return lua_tablegetcall(G.str["string"], "format", ["%.14g", _val]);
|
|
245
|
+
return [];
|
|
246
|
+
};
|
|
247
|
+
var _type_func_map_1 = lua_newtable(
|
|
248
|
+
[],
|
|
249
|
+
"nil",
|
|
250
|
+
_encode_nil_1,
|
|
251
|
+
"table",
|
|
252
|
+
_encode_table_1,
|
|
253
|
+
"string",
|
|
254
|
+
_encode_string_1,
|
|
255
|
+
"number",
|
|
256
|
+
_encode_number_1,
|
|
257
|
+
"boolean",
|
|
258
|
+
G.str["tostring"],
|
|
259
|
+
);
|
|
260
|
+
_encode_1 = function (_val, _stack, _traversalDescription) {
|
|
261
|
+
var tmp;
|
|
262
|
+
var _t_22 = lua_call(G.str["type"], [_val])[0];
|
|
263
|
+
var _f_22 = lua_tableget(_type_func_map_1, _t_22);
|
|
264
|
+
if (lua_true(_f_22)) {
|
|
265
|
+
return lua_call(_f_22, [_val, _stack, _traversalDescription]);
|
|
266
|
+
}
|
|
267
|
+
lua_call(G.str["error"], [
|
|
268
|
+
lua_concat("unexpected type '", lua_concat(_t_22, "'")),
|
|
269
|
+
]);
|
|
270
|
+
return [];
|
|
271
|
+
};
|
|
272
|
+
lua_tableset(_json_1, "encode", function (_val) {
|
|
273
|
+
var tmp;
|
|
274
|
+
return [lua_call(_encode_1, [_val])[0]];
|
|
275
|
+
return [];
|
|
276
|
+
});
|
|
277
|
+
var _parse_1;
|
|
278
|
+
var _create_set_1 = function () {
|
|
279
|
+
var tmp;
|
|
280
|
+
var varargs = slice(arguments, 0);
|
|
281
|
+
var _res_25 = lua_newtable();
|
|
282
|
+
var var_26 = 1,
|
|
283
|
+
stop_26 = lua_assertfloat(
|
|
284
|
+
lua_call(G.str["select"], ["#"].concat(varargs))[0],
|
|
285
|
+
);
|
|
286
|
+
for (; var_26 <= stop_26; var_26++) {
|
|
287
|
+
var _i_26 = var_26;
|
|
288
|
+
lua_tableset(
|
|
289
|
+
_res_25,
|
|
290
|
+
lua_call(G.str["select"], [_i_26].concat(varargs))[0],
|
|
291
|
+
true,
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
return [_res_25];
|
|
295
|
+
return [];
|
|
296
|
+
};
|
|
297
|
+
var _space_chars_1 = lua_call(_create_set_1, [" ", "\t", "\r", "\n"])[0];
|
|
298
|
+
var _delim_chars_1 = lua_call(_create_set_1, [
|
|
299
|
+
" ",
|
|
300
|
+
"\t",
|
|
301
|
+
"\r",
|
|
302
|
+
"\n",
|
|
303
|
+
"]",
|
|
304
|
+
"}",
|
|
305
|
+
",",
|
|
306
|
+
])[0];
|
|
307
|
+
var _escape_chars_1 = lua_call(_create_set_1, [
|
|
308
|
+
"\\",
|
|
309
|
+
"/",
|
|
310
|
+
'"',
|
|
311
|
+
"b",
|
|
312
|
+
"f",
|
|
313
|
+
"n",
|
|
314
|
+
"r",
|
|
315
|
+
"t",
|
|
316
|
+
"u",
|
|
317
|
+
])[0];
|
|
318
|
+
var _literals_1 = lua_call(_create_set_1, ["true", "false", "null"])[0];
|
|
319
|
+
var _literal_map_1 = lua_newtable(
|
|
320
|
+
[],
|
|
321
|
+
"true",
|
|
322
|
+
true,
|
|
323
|
+
"false",
|
|
324
|
+
false,
|
|
325
|
+
"null",
|
|
326
|
+
null,
|
|
327
|
+
);
|
|
328
|
+
var _next_char_1 = function (_str, _idx, _set, _negate) {
|
|
329
|
+
var tmp;
|
|
330
|
+
var var_29 = lua_assertfloat(_idx),
|
|
331
|
+
stop_29 = lua_assertfloat(lua_len(_str));
|
|
332
|
+
for (; var_29 <= stop_29; var_29++) {
|
|
333
|
+
var _i_29 = var_29;
|
|
334
|
+
if (
|
|
335
|
+
!lua_eq(
|
|
336
|
+
lua_tableget(_set, lua_mcall(_str, "sub", [_i_29, _i_29])[0]),
|
|
337
|
+
_negate,
|
|
338
|
+
)
|
|
339
|
+
) {
|
|
340
|
+
return [_i_29];
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return [lua_add(lua_len(_str), 1)];
|
|
344
|
+
return [];
|
|
345
|
+
};
|
|
346
|
+
var _decode_error_1 = function (_str, _idx, _msg) {
|
|
347
|
+
var tmp;
|
|
348
|
+
var _line_count_32 = 1;
|
|
349
|
+
var _col_count_32 = 1;
|
|
350
|
+
var var_33 = 1,
|
|
351
|
+
stop_33 = lua_assertfloat(lua_subtract(_idx, 1));
|
|
352
|
+
for (; var_33 <= stop_33; var_33++) {
|
|
353
|
+
var _i_33 = var_33;
|
|
354
|
+
_col_count_32 = lua_add(_col_count_32, 1);
|
|
355
|
+
if (lua_eq(lua_mcall(_str, "sub", [_i_33, _i_33])[0], "\n")) {
|
|
356
|
+
_line_count_32 = lua_add(_line_count_32, 1);
|
|
357
|
+
_col_count_32 = 1;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
lua_call(
|
|
361
|
+
G.str["error"],
|
|
362
|
+
lua_tablegetcall(G.str["string"], "format", [
|
|
363
|
+
"%s at line %d col %d",
|
|
364
|
+
_msg,
|
|
365
|
+
_line_count_32,
|
|
366
|
+
_col_count_32,
|
|
367
|
+
]),
|
|
368
|
+
);
|
|
369
|
+
return [];
|
|
370
|
+
};
|
|
371
|
+
var _codepoint_to_utf8_1 = function (_n) {
|
|
372
|
+
var tmp;
|
|
373
|
+
var _f_36 = lua_tableget(G.str["math"], "floor");
|
|
374
|
+
if (lua_lte(_n, 0x7f)) {
|
|
375
|
+
return lua_tablegetcall(G.str["string"], "char", [_n]);
|
|
376
|
+
} else if (lua_lte(_n, 0x7ff)) {
|
|
377
|
+
return lua_tablegetcall(G.str["string"], "char", [
|
|
378
|
+
lua_add(lua_call(_f_36, [lua_divide(_n, 64)])[0], 192),
|
|
379
|
+
lua_add(lua_mod(_n, 64), 128),
|
|
380
|
+
]);
|
|
381
|
+
} else if (lua_lte(_n, 0xffff)) {
|
|
382
|
+
return lua_tablegetcall(G.str["string"], "char", [
|
|
383
|
+
lua_add(lua_call(_f_36, [lua_divide(_n, 4096)])[0], 224),
|
|
384
|
+
lua_add(lua_call(_f_36, [lua_divide(lua_mod(_n, 4096), 64)])[0], 128),
|
|
385
|
+
lua_add(lua_mod(_n, 64), 128),
|
|
386
|
+
]);
|
|
387
|
+
} else if (lua_lte(_n, 0x10ffff)) {
|
|
388
|
+
return lua_tablegetcall(G.str["string"], "char", [
|
|
389
|
+
lua_add(lua_call(_f_36, [lua_divide(_n, 262144)])[0], 240),
|
|
390
|
+
lua_add(
|
|
391
|
+
lua_call(_f_36, [lua_divide(lua_mod(_n, 262144), 4096)])[0],
|
|
392
|
+
128,
|
|
393
|
+
),
|
|
394
|
+
lua_add(lua_call(_f_36, [lua_divide(lua_mod(_n, 4096), 64)])[0], 128),
|
|
395
|
+
lua_add(lua_mod(_n, 64), 128),
|
|
396
|
+
]);
|
|
397
|
+
}
|
|
398
|
+
lua_call(
|
|
399
|
+
G.str["error"],
|
|
400
|
+
lua_tablegetcall(G.str["string"], "format", [
|
|
401
|
+
"invalid unicode codepoint '%x'",
|
|
402
|
+
_n,
|
|
403
|
+
]),
|
|
404
|
+
);
|
|
405
|
+
return [];
|
|
406
|
+
};
|
|
407
|
+
var _parse_unicode_escape_1 = function (_s) {
|
|
408
|
+
var tmp;
|
|
409
|
+
var _n1_41 = lua_call(G.str["tonumber"], [
|
|
410
|
+
lua_mcall(_s, "sub", [1, 4])[0],
|
|
411
|
+
16,
|
|
412
|
+
])[0];
|
|
413
|
+
var _n2_41 = lua_call(G.str["tonumber"], [
|
|
414
|
+
lua_mcall(_s, "sub", [7, 10])[0],
|
|
415
|
+
16,
|
|
416
|
+
])[0];
|
|
417
|
+
if (lua_true(_n2_41)) {
|
|
418
|
+
return lua_call(_codepoint_to_utf8_1, [
|
|
419
|
+
lua_add(
|
|
420
|
+
lua_add(
|
|
421
|
+
lua_multiply(lua_subtract(_n1_41, 0xd800), 0x400),
|
|
422
|
+
lua_subtract(_n2_41, 0xdc00),
|
|
423
|
+
),
|
|
424
|
+
0x10000,
|
|
425
|
+
),
|
|
426
|
+
]);
|
|
427
|
+
} else {
|
|
428
|
+
return lua_call(_codepoint_to_utf8_1, [_n1_41]);
|
|
429
|
+
}
|
|
430
|
+
return [];
|
|
431
|
+
};
|
|
432
|
+
var _parse_string_1 = function (_str, _i) {
|
|
433
|
+
var tmp;
|
|
434
|
+
var _res_44 = "";
|
|
435
|
+
var _j_44 = lua_add(_i, 1);
|
|
436
|
+
var _k_44 = _j_44;
|
|
437
|
+
while (lua_lte(_j_44, lua_len(_str))) {
|
|
438
|
+
var _x_45 = lua_mcall(_str, "byte", [_j_44])[0];
|
|
439
|
+
if (lua_lt(_x_45, 32)) {
|
|
440
|
+
lua_call(_decode_error_1, [
|
|
441
|
+
_str,
|
|
442
|
+
_j_44,
|
|
443
|
+
"control character in string",
|
|
444
|
+
]);
|
|
445
|
+
} else if (lua_eq(_x_45, 92)) {
|
|
446
|
+
_res_44 = lua_concat(
|
|
447
|
+
_res_44,
|
|
448
|
+
lua_mcall(_str, "sub", [_k_44, lua_subtract(_j_44, 1)])[0],
|
|
449
|
+
);
|
|
450
|
+
_j_44 = lua_add(_j_44, 1);
|
|
451
|
+
var _c_47 = lua_mcall(_str, "sub", [_j_44, _j_44])[0];
|
|
452
|
+
if (lua_eq(_c_47, "u")) {
|
|
453
|
+
var _hex_48 = lua_or(
|
|
454
|
+
lua_or(
|
|
455
|
+
lua_mcall(_str, "match", [
|
|
456
|
+
"^[dD][89aAbB]%x%x\\u%x%x%x%x",
|
|
457
|
+
lua_add(_j_44, 1),
|
|
458
|
+
])[0],
|
|
459
|
+
function () {
|
|
460
|
+
return lua_mcall(_str, "match", [
|
|
461
|
+
"^%x%x%x%x",
|
|
462
|
+
lua_add(_j_44, 1),
|
|
463
|
+
])[0];
|
|
464
|
+
},
|
|
465
|
+
),
|
|
466
|
+
function () {
|
|
467
|
+
return lua_call(_decode_error_1, [
|
|
468
|
+
_str,
|
|
469
|
+
lua_subtract(_j_44, 1),
|
|
470
|
+
"invalid unicode escape in string",
|
|
471
|
+
])[0];
|
|
472
|
+
},
|
|
473
|
+
);
|
|
474
|
+
_res_44 = lua_concat(
|
|
475
|
+
_res_44,
|
|
476
|
+
lua_call(_parse_unicode_escape_1, [_hex_48])[0],
|
|
477
|
+
);
|
|
478
|
+
_j_44 = lua_add(_j_44, lua_len(_hex_48));
|
|
479
|
+
} else {
|
|
480
|
+
if (lua_not(lua_tableget(_escape_chars_1, _c_47))) {
|
|
481
|
+
lua_call(_decode_error_1, [
|
|
482
|
+
_str,
|
|
483
|
+
lua_subtract(_j_44, 1),
|
|
484
|
+
lua_concat(
|
|
485
|
+
"invalid escape char '",
|
|
486
|
+
lua_concat(_c_47, "' in string"),
|
|
487
|
+
),
|
|
488
|
+
]);
|
|
489
|
+
}
|
|
490
|
+
_res_44 = lua_concat(
|
|
491
|
+
_res_44,
|
|
492
|
+
lua_tableget(_escape_char_map_inv_1, _c_47),
|
|
493
|
+
);
|
|
494
|
+
}
|
|
495
|
+
_k_44 = lua_add(_j_44, 1);
|
|
496
|
+
} else if (lua_eq(_x_45, 34)) {
|
|
497
|
+
_res_44 = lua_concat(
|
|
498
|
+
_res_44,
|
|
499
|
+
lua_mcall(_str, "sub", [_k_44, lua_subtract(_j_44, 1)])[0],
|
|
500
|
+
);
|
|
501
|
+
return [_res_44, lua_add(_j_44, 1)];
|
|
502
|
+
}
|
|
503
|
+
_j_44 = lua_add(_j_44, 1);
|
|
504
|
+
}
|
|
505
|
+
lua_call(_decode_error_1, [
|
|
506
|
+
_str,
|
|
507
|
+
_i,
|
|
508
|
+
"expected closing quote for string",
|
|
509
|
+
]);
|
|
510
|
+
return [];
|
|
511
|
+
};
|
|
512
|
+
var _parse_number_1 = function (_str, _i) {
|
|
513
|
+
var tmp;
|
|
514
|
+
var _x_52 = lua_call(_next_char_1, [_str, _i, _delim_chars_1])[0];
|
|
515
|
+
var _s_52 = lua_mcall(_str, "sub", [_i, lua_subtract(_x_52, 1)])[0];
|
|
516
|
+
var _n_52 = lua_call(G.str["tonumber"], [_s_52])[0];
|
|
517
|
+
if (lua_not(_n_52)) {
|
|
518
|
+
lua_call(_decode_error_1, [
|
|
519
|
+
_str,
|
|
520
|
+
_i,
|
|
521
|
+
lua_concat("invalid number '", lua_concat(_s_52, "'")),
|
|
522
|
+
]);
|
|
523
|
+
}
|
|
524
|
+
return [_n_52, _x_52];
|
|
525
|
+
return [];
|
|
526
|
+
};
|
|
527
|
+
var _parse_literal_1 = function (_str, _i) {
|
|
528
|
+
var tmp;
|
|
529
|
+
var _x_54 = lua_call(_next_char_1, [_str, _i, _delim_chars_1])[0];
|
|
530
|
+
var _word_54 = lua_mcall(_str, "sub", [_i, lua_subtract(_x_54, 1)])[0];
|
|
531
|
+
if (lua_not(lua_tableget(_literals_1, _word_54))) {
|
|
532
|
+
lua_call(_decode_error_1, [
|
|
533
|
+
_str,
|
|
534
|
+
_i,
|
|
535
|
+
lua_concat("invalid literal '", lua_concat(_word_54, "'")),
|
|
536
|
+
]);
|
|
537
|
+
}
|
|
538
|
+
return [lua_tableget(_literal_map_1, _word_54), _x_54];
|
|
539
|
+
return [];
|
|
540
|
+
};
|
|
541
|
+
var _parse_array_1 = function (_str, _i) {
|
|
542
|
+
var tmp;
|
|
543
|
+
var _res_56 = lua_newtable();
|
|
544
|
+
var _n_56 = 1;
|
|
545
|
+
_i = lua_add(_i, 1);
|
|
546
|
+
while (lua_true(1)) {
|
|
547
|
+
var _x_57;
|
|
548
|
+
_i = lua_call(_next_char_1, [_str, _i, _space_chars_1, true])[0];
|
|
549
|
+
if (lua_eq(lua_mcall(_str, "sub", [_i, _i])[0], "]")) {
|
|
550
|
+
_i = lua_add(_i, 1);
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
tmp = lua_call(_parse_1, [_str, _i]);
|
|
554
|
+
_x_57 = tmp[0];
|
|
555
|
+
_i = tmp[1];
|
|
556
|
+
tmp = null;
|
|
557
|
+
lua_tableset(_res_56, _n_56, _x_57);
|
|
558
|
+
_n_56 = lua_add(_n_56, 1);
|
|
559
|
+
_i = lua_call(_next_char_1, [_str, _i, _space_chars_1, true])[0];
|
|
560
|
+
var _chr_57 = lua_mcall(_str, "sub", [_i, _i])[0];
|
|
561
|
+
_i = lua_add(_i, 1);
|
|
562
|
+
if (lua_eq(_chr_57, "]")) {
|
|
563
|
+
break;
|
|
564
|
+
}
|
|
565
|
+
if (!lua_eq(_chr_57, ",")) {
|
|
566
|
+
lua_call(_decode_error_1, [_str, _i, "expected ']' or ','"]);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
return [_res_56, _i];
|
|
570
|
+
return [];
|
|
571
|
+
};
|
|
572
|
+
var _parse_object_1 = function (_str, _i) {
|
|
573
|
+
var tmp;
|
|
574
|
+
var _res_61 = lua_newtable();
|
|
575
|
+
_i = lua_add(_i, 1);
|
|
576
|
+
while (lua_true(1)) {
|
|
577
|
+
var _key_62, _val_62;
|
|
578
|
+
_i = lua_call(_next_char_1, [_str, _i, _space_chars_1, true])[0];
|
|
579
|
+
if (lua_eq(lua_mcall(_str, "sub", [_i, _i])[0], "}")) {
|
|
580
|
+
_i = lua_add(_i, 1);
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
if (!lua_eq(lua_mcall(_str, "sub", [_i, _i])[0], '"')) {
|
|
584
|
+
lua_call(_decode_error_1, [_str, _i, "expected string for key"]);
|
|
585
|
+
}
|
|
586
|
+
tmp = lua_call(_parse_1, [_str, _i]);
|
|
587
|
+
_key_62 = tmp[0];
|
|
588
|
+
_i = tmp[1];
|
|
589
|
+
tmp = null;
|
|
590
|
+
_i = lua_call(_next_char_1, [_str, _i, _space_chars_1, true])[0];
|
|
591
|
+
if (!lua_eq(lua_mcall(_str, "sub", [_i, _i])[0], ":")) {
|
|
592
|
+
lua_call(_decode_error_1, [_str, _i, "expected ':' after key"]);
|
|
593
|
+
}
|
|
594
|
+
_i = lua_call(_next_char_1, [
|
|
595
|
+
_str,
|
|
596
|
+
lua_add(_i, 1),
|
|
597
|
+
_space_chars_1,
|
|
598
|
+
true,
|
|
599
|
+
])[0];
|
|
600
|
+
tmp = lua_call(_parse_1, [_str, _i]);
|
|
601
|
+
_val_62 = tmp[0];
|
|
602
|
+
_i = tmp[1];
|
|
603
|
+
tmp = null;
|
|
604
|
+
lua_tableset(_res_61, _key_62, _val_62);
|
|
605
|
+
_i = lua_call(_next_char_1, [_str, _i, _space_chars_1, true])[0];
|
|
606
|
+
var _chr_62 = lua_mcall(_str, "sub", [_i, _i])[0];
|
|
607
|
+
_i = lua_add(_i, 1);
|
|
608
|
+
if (lua_eq(_chr_62, "}")) {
|
|
609
|
+
break;
|
|
610
|
+
}
|
|
611
|
+
if (!lua_eq(_chr_62, ",")) {
|
|
612
|
+
lua_call(_decode_error_1, [_str, _i, "expected '}' or ','"]);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
return [_res_61, _i];
|
|
616
|
+
return [];
|
|
617
|
+
};
|
|
618
|
+
var _char_func_map_1 = lua_newtable(
|
|
619
|
+
[],
|
|
620
|
+
'"',
|
|
621
|
+
_parse_string_1,
|
|
622
|
+
"0",
|
|
623
|
+
_parse_number_1,
|
|
624
|
+
"1",
|
|
625
|
+
_parse_number_1,
|
|
626
|
+
"2",
|
|
627
|
+
_parse_number_1,
|
|
628
|
+
"3",
|
|
629
|
+
_parse_number_1,
|
|
630
|
+
"4",
|
|
631
|
+
_parse_number_1,
|
|
632
|
+
"5",
|
|
633
|
+
_parse_number_1,
|
|
634
|
+
"6",
|
|
635
|
+
_parse_number_1,
|
|
636
|
+
"7",
|
|
637
|
+
_parse_number_1,
|
|
638
|
+
"8",
|
|
639
|
+
_parse_number_1,
|
|
640
|
+
"9",
|
|
641
|
+
_parse_number_1,
|
|
642
|
+
"-",
|
|
643
|
+
_parse_number_1,
|
|
644
|
+
"t",
|
|
645
|
+
_parse_literal_1,
|
|
646
|
+
"f",
|
|
647
|
+
_parse_literal_1,
|
|
648
|
+
"n",
|
|
649
|
+
_parse_literal_1,
|
|
650
|
+
"[",
|
|
651
|
+
_parse_array_1,
|
|
652
|
+
"{",
|
|
653
|
+
_parse_object_1,
|
|
654
|
+
);
|
|
655
|
+
_parse_1 = function (_str, _idx) {
|
|
656
|
+
var tmp;
|
|
657
|
+
var _chr_68 = lua_mcall(_str, "sub", [_idx, _idx])[0];
|
|
658
|
+
var _f_68 = lua_tableget(_char_func_map_1, _chr_68);
|
|
659
|
+
if (lua_true(_f_68)) {
|
|
660
|
+
return lua_call(_f_68, [_str, _idx]);
|
|
661
|
+
}
|
|
662
|
+
lua_call(_decode_error_1, [
|
|
663
|
+
_str,
|
|
664
|
+
_idx,
|
|
665
|
+
lua_concat("unexpected character '", lua_concat(_chr_68, "'")),
|
|
666
|
+
]);
|
|
667
|
+
return [];
|
|
668
|
+
};
|
|
669
|
+
lua_tableset(_json_1, "decode", function (_str) {
|
|
670
|
+
var tmp;
|
|
671
|
+
if (!lua_eq(lua_call(G.str["type"], [_str])[0], "string")) {
|
|
672
|
+
lua_call(G.str["error"], [
|
|
673
|
+
lua_concat(
|
|
674
|
+
"expected argument of type string, got ",
|
|
675
|
+
lua_call(G.str["type"], [_str])[0],
|
|
676
|
+
),
|
|
677
|
+
]);
|
|
678
|
+
}
|
|
679
|
+
tmp = lua_call(
|
|
680
|
+
_parse_1,
|
|
681
|
+
[_str].concat(lua_call(_next_char_1, [_str, 1, _space_chars_1, true])),
|
|
682
|
+
);
|
|
683
|
+
var _res_70 = tmp[0];
|
|
684
|
+
var _idx_70 = tmp[1];
|
|
685
|
+
tmp = null;
|
|
686
|
+
_idx_70 = lua_call(_next_char_1, [
|
|
687
|
+
_str,
|
|
688
|
+
_idx_70,
|
|
689
|
+
_space_chars_1,
|
|
690
|
+
true,
|
|
691
|
+
])[0];
|
|
692
|
+
if (lua_lte(_idx_70, lua_len(_str))) {
|
|
693
|
+
lua_call(_decode_error_1, [_str, _idx_70, "trailing garbage"]);
|
|
694
|
+
}
|
|
695
|
+
return [_res_70];
|
|
696
|
+
return [];
|
|
697
|
+
});
|
|
698
|
+
return [_json_1];
|
|
699
|
+
}
|
|
700
|
+
return [G];
|
|
701
|
+
})()[0];
|