exupery 0.1.6 → 0.1.8

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.
Files changed (29) hide show
  1. package/dist/generated/generic/resolve.d.ts +1 -1
  2. package/dist/generated/generic/resolve.js +7 -5
  3. package/dist/generated/implementation/generic/resolve.d.ts +81 -0
  4. package/dist/generated/implementation/generic/resolve.js +251 -0
  5. package/dist/generated/implementation/schemas/implementation/resolve.d.ts +1 -1
  6. package/dist/generated/implementation/schemas/implementation/resolve.js +2 -2
  7. package/dist/generated/implementation/schemas/interface/resolve.d.ts +1 -1
  8. package/dist/generated/implementation/schemas/interface/resolve.js +2 -2
  9. package/dist/generated/interface/generic/resolve.d.ts +11 -0
  10. package/dist/generated/interface/generic/resolve.js +3 -0
  11. package/dist/generated/interface/schemas/implementation/resolve.d.ts +1 -1
  12. package/dist/generated/interface/schemas/interface/resolve.d.ts +1 -1
  13. package/dist/generated/interface/schemas/typescript_light/migration_boilerplate.d.ts +132 -0
  14. package/dist/generated/interface/schemas/typescript_light/unconstrained.d.ts +135 -0
  15. package/dist/transformations/implementation/typescript_light.d.ts +24 -0
  16. package/dist/transformations/implementation/typescript_light.js +554 -0
  17. package/dist/transformations/implementation/typescript_temp.d.ts +24 -0
  18. package/dist/transformations/implementation/typescript_temp.js +554 -0
  19. package/dist/transformations/interface/typescript_light.d.ts +23 -0
  20. package/dist/transformations/interface/typescript_light.js +524 -0
  21. package/dist/transformations/interface/typescript_temp.d.ts +1 -1
  22. package/dist/transformations/library/typescript_light.d.ts +10 -0
  23. package/dist/transformations/library/typescript_light.js +42 -0
  24. package/dist/transformations/library/typescript_temp.d.ts +10 -0
  25. package/dist/transformations/library/typescript_temp.js +42 -0
  26. package/dist/transformations/typescript_light/fountain_pen_block.d.ts +1 -0
  27. package/dist/transformations/typescript_light/fountain_pen_block.js +6 -2
  28. package/dist/transformations/typescript_temp/fountain_pen_block.d.ts +1 -1
  29. package/package.json +4 -4
@@ -0,0 +1,554 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Literal = exports.Variables = exports.Initialization = exports.Selection = exports.String_Literal = exports.Module_Set = void 0;
27
+ exports.line_dictionary = line_dictionary;
28
+ const pa = __importStar(require("exupery-core-alg"));
29
+ const create_identifier_1 = require("../typescript_light/operations/create_identifier");
30
+ const _interface = __importStar(require("../interface/typescript_light"));
31
+ const fountain_pen_block_1 = require("../typescript_light/fountain_pen_block");
32
+ const pareto_standard_operations_1 = require("pareto-standard-operations");
33
+ const block_1 = require("pareto-fountain-pen/dist/shorthands/block");
34
+ const op = {
35
+ 'join list of texts': pareto_standard_operations_1.pure.text['join list of texts'],
36
+ 'dictionary to list, sorted by code point': pareto_standard_operations_1.impure.dictionary['to list, sorted by code point'],
37
+ 'dictionary is empty': pareto_standard_operations_1.impure.dictionary['is empty'],
38
+ 'serialize with apostrophe delimiter': pareto_standard_operations_1.impure.text['serialize with apostrophe delimiter'],
39
+ 'serialize with quote delimiter': pareto_standard_operations_1.impure.text['serialize with quote delimiter'],
40
+ 'serialize with grave delimiter': pareto_standard_operations_1.impure.text['serialize with grave delimiter'],
41
+ 'repeat text': pareto_standard_operations_1.impure.text.repeat,
42
+ 'create valid file name': pareto_standard_operations_1.impure.text['create valid file name'],
43
+ 'create identifier': create_identifier_1.$$
44
+ };
45
+ const Module_Set = ($, $p) => {
46
+ return $.map(($, key) => pa.cc($, ($) => {
47
+ switch ($[0]) {
48
+ case 'module': return pa.ss($, ($) => {
49
+ const type_imports = $['type imports'];
50
+ const valid_file_name = ($) => {
51
+ return op['create valid file name']($, { 'replace spaces with underscores': true });
52
+ };
53
+ const x = (0, block_1.block)([
54
+ block_1.b.simple_line("import * as _pa from 'exupery-core-alg'"),
55
+ $p.phase === 'development' ? block_1.b.simple_line("import * as _pd from 'exupery-core-dev'") : block_1.b.nothing(),
56
+ block_1.b.simple_line(""),
57
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($['type imports']).map(($) => block_1.b.sub([
58
+ block_1.b.nested_line([
59
+ block_1.l.snippet("import * as "),
60
+ block_1.l.snippet(op['create identifier']([" i ", $.key])),
61
+ block_1.l.snippet(" from "),
62
+ (0, exports.String_Literal)(pa.cc($.value.type, ($) => {
63
+ switch ($[0]) {
64
+ case 'external': return pa.ss($, ($) => valid_file_name($));
65
+ case 'ancestor': return pa.ss($, ($) => `${op['repeat text']("../", { 'count': $['number of steps'] })}${valid_file_name($.dependency)}`);
66
+ case 'sibling': return pa.ss($, ($) => `./${valid_file_name($)}`);
67
+ default: return pa.au($[0]);
68
+ }
69
+ })
70
+ + op['join list of texts']($.value.tail.map(($) => `/${valid_file_name($)}`)), {
71
+ 'delimiter': "quote"
72
+ }),
73
+ ])
74
+ ]))),
75
+ block_1.b.simple_line(""),
76
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($['variable imports']).map(($) => block_1.b.sub([
77
+ block_1.b.nested_line([
78
+ block_1.l.snippet("import * as "),
79
+ block_1.l.snippet(op['create identifier']([" i var ", $.key])),
80
+ block_1.l.snippet(" from "),
81
+ (0, exports.String_Literal)(pa.cc($.value.type, ($) => {
82
+ switch ($[0]) {
83
+ case 'external': return pa.ss($, ($) => valid_file_name($));
84
+ case 'ancestor': return pa.ss($, ($) => `${op['repeat text']("../", { 'count': $['number of steps'] })}${valid_file_name($.dependency)}`);
85
+ case 'sibling': return pa.ss($, ($) => `./${valid_file_name($)}`);
86
+ default: return pa.au($[0]);
87
+ }
88
+ })
89
+ + op['join list of texts']($.value.tail.map(($) => `/${valid_file_name($)}`)), {
90
+ 'delimiter': "quote"
91
+ }),
92
+ ])
93
+ ]))),
94
+ block_1.b.simple_line(""),
95
+ (0, exports.Variables)($.variables, {
96
+ 'type imports': type_imports,
97
+ 'export': true,
98
+ }),
99
+ ]);
100
+ return ['file', x];
101
+ });
102
+ case 'set': return pa.ss($, ($) => ['directory', (0, exports.Module_Set)($, $p)]);
103
+ default: return pa.au($[0]);
104
+ }
105
+ }));
106
+ };
107
+ exports.Module_Set = Module_Set;
108
+ function line_dictionary($, if_empty, prefix, suffix, add_commas) {
109
+ let is_empty = true;
110
+ $.map(($) => {
111
+ is_empty = false;
112
+ });
113
+ if (is_empty) {
114
+ return if_empty;
115
+ }
116
+ else {
117
+ let is_first = true;
118
+ const x = block_1.l.sub([
119
+ prefix,
120
+ block_1.l.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => {
121
+ const out = block_1.l.sub([
122
+ is_first ?
123
+ block_1.l.nothing()
124
+ : add_commas
125
+ ? block_1.l.snippet(", ")
126
+ : block_1.l.nothing(),
127
+ $.value,
128
+ ]);
129
+ is_first = false;
130
+ return out;
131
+ })),
132
+ suffix,
133
+ ]);
134
+ return x;
135
+ }
136
+ }
137
+ const String_Literal = ($, $p) => {
138
+ return block_1.l.snippet($p.delimiter === "quote" ? op['serialize with quote delimiter']($) : op['serialize with apostrophe delimiter']($));
139
+ };
140
+ exports.String_Literal = String_Literal;
141
+ const Selection = ($, $p) => {
142
+ return block_1.l.sub([
143
+ pa.cc($.start, ($) => {
144
+ switch ($[0]) {
145
+ case 'abort': return pa.ss($, ($) => block_1.l.snippet("_pa.panic('ABORT SELECTION')"));
146
+ case 'transform optional value': return pa.ss($, ($) => block_1.l.sub([
147
+ (0, exports.Selection)($.source, $p),
148
+ block_1.l.snippet(".transform("),
149
+ block_1.l.indent([
150
+ block_1.b.nested_line([
151
+ block_1.l.snippet("($) => "),
152
+ (0, exports.Selection)($['if set'], $p),
153
+ block_1.l.snippet(","),
154
+ ]),
155
+ block_1.b.nested_line([
156
+ block_1.l.snippet("() => "),
157
+ (0, exports.Selection)($['if not set'], $p),
158
+ ]),
159
+ ]),
160
+ block_1.l.snippet(")"),
161
+ ]));
162
+ case 'call': return pa.ss($, ($) => block_1.l.sub([
163
+ (0, exports.Selection)($.source, $p),
164
+ block_1.l.snippet("("),
165
+ block_1.l.indent([
166
+ block_1.b.nested_line([
167
+ (0, exports.Selection)($.context, $p), $.arguments.transform(($) => block_1.l.snippet(","), () => block_1.l.nothing()),
168
+ ]),
169
+ $.arguments.transform(($) => block_1.b.nested_line([
170
+ op['dictionary is empty']($)
171
+ ? block_1.l.snippet("null")
172
+ : block_1.l.sub([
173
+ block_1.l.snippet("{"),
174
+ block_1.l.indent([
175
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
176
+ block_1.b.nested_line([
177
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
178
+ block_1.l.snippet(": "),
179
+ (0, exports.Initialization)($.value, $p),
180
+ block_1.l.snippet(","),
181
+ ]),
182
+ ]))),
183
+ ]),
184
+ block_1.l.snippet("}")
185
+ ]),
186
+ ]), () => block_1.b.nothing()),
187
+ ]),
188
+ block_1.l.snippet(")"),
189
+ ]));
190
+ case 'implement me': return pa.ss($, ($) => block_1.l.snippet("_pd.implement_me()"));
191
+ case 'argument': return pa.ss($, ($) => block_1.l.snippet(op['create identifier'](["FOOO FIX ARGUMENT"])));
192
+ case 'context': return pa.ss($, ($) => block_1.l.snippet("$"));
193
+ case 'variable': return pa.ss($, ($) => block_1.l.snippet(op['create identifier']([$])));
194
+ case 'parameter': return pa.ss($, ($) => block_1.l.sub([
195
+ block_1.l.snippet("$p["),
196
+ (0, exports.String_Literal)($, { 'delimiter': "apostrophe" }),
197
+ block_1.l.snippet("]"),
198
+ ]));
199
+ case 'imported variable': return pa.ss($, ($) => block_1.l.sub([
200
+ block_1.l.snippet(op['create identifier']([$.import])),
201
+ block_1.l.snippet("."),
202
+ block_1.l.snippet(op['create identifier']([$.variable])),
203
+ ]));
204
+ default: return pa.au($[0]);
205
+ }
206
+ }),
207
+ block_1.l.sub_decorated($.tail.map(($) => block_1.l.sub([
208
+ block_1.l.snippet("["),
209
+ (0, exports.String_Literal)($, { 'delimiter': "apostrophe" }),
210
+ block_1.l.snippet("]"),
211
+ ]))),
212
+ ]);
213
+ };
214
+ exports.Selection = Selection;
215
+ const Initialization = ($, $p) => {
216
+ return pa.cc($, ($) => {
217
+ switch ($[0]) {
218
+ case 'block': return pa.ss($, ($) => block_1.l.sub([
219
+ block_1.l.snippet("_pa.block("),
220
+ block_1.l.snippet("() => {"),
221
+ block_1.l.indent([
222
+ //temp variables
223
+ block_1.b.sub_decorated($['temp ordered variables'].map(($) => block_1.b.nested_line([
224
+ block_1.l.snippet("const "),
225
+ block_1.l.snippet(op['create identifier']([$.name])),
226
+ $.type.transform(($) => block_1.l.sub([
227
+ block_1.l.snippet(": "),
228
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
229
+ 'global type parameters': pa.not_set(),
230
+ 'temp imports': pa.set($p['temp imports']),
231
+ }), {
232
+ 'replace empty type literals by null': true
233
+ }),
234
+ ]), () => block_1.l.nothing()),
235
+ block_1.l.snippet(" = "),
236
+ (0, exports.Initialization)($.initialization, {
237
+ 'temp imports': $p['temp imports']
238
+ })
239
+ ]))),
240
+ (0, exports.Variables)($.variables, {
241
+ 'type imports': $p['temp imports'],
242
+ 'export': false,
243
+ }),
244
+ block_1.b.nested_line([
245
+ block_1.l.snippet("return "),
246
+ (0, exports.Initialization)($.initialization, $p),
247
+ ])
248
+ ]),
249
+ block_1.l.snippet("})"),
250
+ ]));
251
+ case 'change context': return pa.ss($, ($) => block_1.l.sub([
252
+ block_1.l.snippet("_pa.cc("),
253
+ (0, exports.Selection)($['new context'], $p),
254
+ block_1.l.snippet(", ($) => "),
255
+ (0, exports.Initialization)($.initialization, $p),
256
+ block_1.l.snippet(")"),
257
+ ]));
258
+ case 'literal': return pa.ss($, ($) => (0, exports.Literal)($.value, $p));
259
+ case 'selection': return pa.ss($, ($) => (0, exports.Selection)($, $p));
260
+ case 'transformation': return pa.ss($, ($) => {
261
+ const p_source = $.source;
262
+ return block_1.l.sub([
263
+ pa.cc($.type, ($) => {
264
+ switch ($[0]) {
265
+ case 'array': return pa.ss($, ($) => pa.cc($, ($) => {
266
+ switch ($[0]) {
267
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
268
+ (0, exports.Selection)(p_source, $p),
269
+ block_1.l.snippet(".map(($) => "),
270
+ (0, exports.Initialization)($, $p),
271
+ block_1.l.snippet(")"),
272
+ ]));
273
+ default: return pa.au($[0]);
274
+ }
275
+ }));
276
+ case 'boolean': return pa.ss($, ($) => pa.cc($, ($) => {
277
+ switch ($[0]) {
278
+ case 'not': return pa.ss($, ($) => block_1.l.sub([block_1.l.snippet("FIXME BOOLEAN NOT")]));
279
+ case 'transform': return pa.ss($, ($) => block_1.l.sub([
280
+ (0, exports.Selection)(p_source, $p),
281
+ block_1.l.indent([
282
+ block_1.b.nested_line([
283
+ block_1.l.snippet("? "),
284
+ (0, exports.Initialization)($['if true'], $p),
285
+ ]),
286
+ block_1.b.nested_line([
287
+ block_1.l.snippet(": "),
288
+ (0, exports.Initialization)($['if false'], $p),
289
+ ]),
290
+ ])
291
+ ]));
292
+ default: return pa.au($[0]);
293
+ }
294
+ }));
295
+ case 'dictionary': return pa.ss($, ($) => pa.cc($, ($) => {
296
+ switch ($[0]) {
297
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
298
+ (0, exports.Selection)(p_source, $p),
299
+ block_1.l.snippet(".map(($) => "),
300
+ (0, exports.Initialization)($, $p),
301
+ block_1.l.snippet(")"),
302
+ ]));
303
+ default: return pa.au($[0]);
304
+ }
305
+ }));
306
+ case 'function': return pa.ss($, ($) => pa.cc($, ($) => {
307
+ switch ($[0]) {
308
+ case 'call': return pa.ss($, ($) => block_1.l.sub([
309
+ (0, exports.Selection)(p_source, $p),
310
+ block_1.l.snippet("("),
311
+ block_1.l.indent([
312
+ block_1.b.nested_line([
313
+ (0, exports.Initialization)($.context, $p), $.arguments.transform(($) => block_1.l.snippet(","), () => block_1.l.nothing()),
314
+ ]),
315
+ $.arguments.transform(($) => block_1.b.nested_line([
316
+ op['dictionary is empty']($)
317
+ ? block_1.l.snippet("null")
318
+ : block_1.l.sub([
319
+ block_1.l.snippet("{"),
320
+ block_1.l.indent([
321
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
322
+ block_1.b.nested_line([
323
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
324
+ block_1.l.snippet(": "),
325
+ (0, exports.Initialization)($.value, $p),
326
+ block_1.l.snippet(","),
327
+ ]),
328
+ ]))),
329
+ ]),
330
+ block_1.l.snippet("}")
331
+ ]),
332
+ ]), () => block_1.b.nothing()),
333
+ ]),
334
+ block_1.l.snippet(")"),
335
+ ]));
336
+ default: return pa.au($[0]);
337
+ }
338
+ }));
339
+ case 'optional': return pa.ss($, ($) => pa.cc($, ($) => {
340
+ switch ($[0]) {
341
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
342
+ (0, exports.Selection)(p_source, $p),
343
+ block_1.l.snippet(".map(($) => "),
344
+ (0, exports.Initialization)($, $p),
345
+ block_1.l.snippet(")"),
346
+ ]));
347
+ case 'transform': return pa.ss($, ($) => block_1.l.sub([
348
+ (0, exports.Selection)(p_source, $p),
349
+ block_1.l.snippet(".transform("),
350
+ block_1.l.indent([
351
+ block_1.b.nested_line([
352
+ block_1.l.snippet("($) => "),
353
+ (0, exports.Initialization)($['if set'], $p),
354
+ block_1.l.snippet(","),
355
+ ]),
356
+ block_1.b.nested_line([
357
+ block_1.l.snippet("() => "),
358
+ (0, exports.Initialization)($['if not set'], $p),
359
+ ]),
360
+ ]),
361
+ block_1.l.snippet(")"),
362
+ ]));
363
+ default: return pa.au($[0]);
364
+ }
365
+ }));
366
+ case 'tagged union': return pa.ss($, ($) => pa.cc($, ($) => {
367
+ switch ($[0]) {
368
+ case 'switch': return pa.ss($, ($) => block_1.l.sub([
369
+ block_1.l.snippet("_pa.cc("),
370
+ (0, exports.Selection)(p_source, $p),
371
+ block_1.l.snippet(", ($)"),
372
+ $['resulting node'].transform(($) => block_1.l.sub([
373
+ block_1.l.snippet(": "),
374
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
375
+ 'global type parameters': pa.not_set(),
376
+ 'temp imports': pa.set($p['temp imports']),
377
+ }), {
378
+ 'replace empty type literals by null': true
379
+ }),
380
+ ]), () => block_1.l.nothing()),
381
+ block_1.l.snippet(" => {"),
382
+ block_1.l.indent([
383
+ block_1.b.nested_line([
384
+ pa.cc($.type, ($) => {
385
+ switch ($[0]) {
386
+ case 'full': return pa.ss($, ($) => block_1.l.sub([
387
+ block_1.l.snippet("switch ($[0]) {"),
388
+ block_1.l.indent([
389
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($.cases).map(($) => block_1.b.sub([
390
+ block_1.b.nested_line([
391
+ block_1.l.snippet("case "),
392
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
393
+ block_1.l.snippet(": return _pa.ss($, ($) => "),
394
+ (0, exports.Initialization)($.value, $p),
395
+ block_1.l.snippet(")"),
396
+ ])
397
+ ]))),
398
+ block_1.b.simple_line("default: return _pa.au($[0])")
399
+ ]),
400
+ block_1.l.snippet("}"),
401
+ ]));
402
+ case 'partial': return pa.ss($, ($) => block_1.l.sub([
403
+ block_1.l.snippet("switch ($[0]) {"),
404
+ block_1.l.indent([
405
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($.cases).map(($) => block_1.b.sub([
406
+ block_1.b.nested_line([
407
+ block_1.l.snippet("case "),
408
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
409
+ block_1.l.snippet(": return _pa.ss($, ($) => "),
410
+ (0, exports.Initialization)($.value, $p),
411
+ block_1.l.snippet(")"),
412
+ ])
413
+ ]))),
414
+ block_1.b.nested_line([
415
+ block_1.l.snippet("default: return "),
416
+ //Expression($.default, $p),
417
+ ])
418
+ ]),
419
+ block_1.l.snippet("}"),
420
+ ]));
421
+ default: return pa.au($[0]);
422
+ }
423
+ }),
424
+ ]),
425
+ ]),
426
+ block_1.l.snippet("})"),
427
+ ]));
428
+ default: return pa.au($[0]);
429
+ }
430
+ }));
431
+ default: return pa.au($[0]);
432
+ }
433
+ })
434
+ ]);
435
+ });
436
+ default: return pa.au($[0]);
437
+ }
438
+ });
439
+ };
440
+ exports.Initialization = Initialization;
441
+ const Variables = ($, $p) => {
442
+ return block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
443
+ block_1.b.nested_line([
444
+ $p.export ? block_1.l.snippet("export ") : block_1.l.nothing(),
445
+ block_1.l.snippet("const "),
446
+ block_1.l.snippet(op['create identifier']([$.key])),
447
+ $.value.type.transform(($) => block_1.l.sub([
448
+ block_1.l.snippet(": "),
449
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
450
+ 'global type parameters': pa.not_set(),
451
+ 'temp imports': pa.set($p['type imports']),
452
+ }), {
453
+ 'replace empty type literals by null': true
454
+ }),
455
+ ]), () => block_1.l.nothing()),
456
+ block_1.l.snippet(" = "),
457
+ (0, exports.Initialization)($.value.initialization, {
458
+ 'temp imports': $p['type imports']
459
+ })
460
+ ])
461
+ ])));
462
+ };
463
+ exports.Variables = Variables;
464
+ const Literal = ($, $p) => {
465
+ return block_1.l.sub([
466
+ pa.cc($, ($) => {
467
+ switch ($[0]) {
468
+ case 'boolean': return pa.ss($, ($) => pa.cc($, ($) => {
469
+ switch ($[0]) {
470
+ case 'true': return block_1.l.snippet("true");
471
+ case 'false': return block_1.l.snippet("false");
472
+ default: return pa.au($[0]);
473
+ }
474
+ }));
475
+ case 'dictionary': return pa.ss($, ($) => block_1.l.sub([
476
+ block_1.l.snippet("_pa.dictionary_literal({"),
477
+ block_1.l.indent([
478
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.nested_line([
479
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
480
+ block_1.l.snippet(": "),
481
+ (0, exports.Initialization)($.value, $p),
482
+ block_1.l.snippet(","),
483
+ ]))),
484
+ ]),
485
+ block_1.l.snippet("})"),
486
+ ]));
487
+ case 'function': return pa.ss($, ($) => block_1.l.sub([
488
+ block_1.l.snippet("($"),
489
+ $['temp has parameters'] ? block_1.l.snippet(", $p") : block_1.l.nothing(),
490
+ block_1.l.snippet(") => "),
491
+ (0, exports.Initialization)($.initialization, $p),
492
+ ]));
493
+ case 'group': return pa.ss($, ($) => line_dictionary($.map(($, key) => block_1.l.indent([
494
+ block_1.b.nested_line([
495
+ (0, exports.String_Literal)(key, { 'delimiter': "apostrophe" }),
496
+ block_1.l.snippet(": "),
497
+ (0, exports.Initialization)($, $p),
498
+ block_1.l.snippet(","),
499
+ ])
500
+ ])), block_1.l.snippet("null"), block_1.l.snippet("({"), block_1.l.snippet("})"), false));
501
+ case 'array': return pa.ss($, ($) => block_1.l.sub([
502
+ block_1.l.snippet("_pa.array_literal(["),
503
+ block_1.l.indent([
504
+ block_1.b.sub_decorated($.map(($) => block_1.b.nested_line([
505
+ (0, exports.Initialization)($, $p),
506
+ block_1.l.snippet(","),
507
+ ]))),
508
+ ]),
509
+ block_1.l.snippet("])"),
510
+ ]));
511
+ case 'null': return pa.ss($, ($) => block_1.l.snippet("null"));
512
+ case 'number': return pa.ss($, ($) => pa.cc($, ($) => {
513
+ switch ($[0]) {
514
+ case 'floting point': return pa.ss($, ($) => block_1.l.snippet(pa.impure['approximate number'].serialize($)));
515
+ case 'integer': return pa.ss($, ($) => block_1.l.snippet(pa.impure.integer.serialize($)));
516
+ case 'signed integer': return pa.ss($, ($) => block_1.l.snippet(pa.impure.integer.serialize($)));
517
+ default: return pa.au($[0]);
518
+ }
519
+ }));
520
+ case 'optional': return pa.ss($, ($) => pa.cc($, ($) => {
521
+ switch ($[0]) {
522
+ case 'not set': return block_1.l.snippet("_pa.not_set()");
523
+ case 'set': return pa.ss($, ($) => block_1.l.sub([
524
+ block_1.l.snippet("_pa.set("),
525
+ (0, exports.Initialization)($, $p),
526
+ block_1.l.snippet(")"),
527
+ ]));
528
+ default: return pa.au($[0]);
529
+ }
530
+ }));
531
+ case 'tagged union': return pa.ss($, ($) => block_1.l.sub([
532
+ block_1.l.snippet("["),
533
+ (0, exports.String_Literal)($.case, { 'delimiter': "apostrophe" }),
534
+ block_1.l.snippet(", "),
535
+ (0, exports.Initialization)($.value, $p),
536
+ block_1.l.snippet("]"),
537
+ ]));
538
+ case 'string': return pa.ss($, ($) => {
539
+ const value = $.value;
540
+ return pa.cc($.delimiter, ($) => {
541
+ switch ($[0]) {
542
+ case 'quote': return pa.ss($, ($) => (0, exports.String_Literal)(value, { 'delimiter': "quote" }));
543
+ case 'backtick': return pa.ss($, ($) => block_1.l.snippet(op['serialize with grave delimiter'](value)));
544
+ default: return pa.au($[0]);
545
+ }
546
+ });
547
+ });
548
+ default: return pa.au($[0]);
549
+ }
550
+ })
551
+ ]);
552
+ };
553
+ exports.Literal = Literal;
554
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF90ZW1wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWF0aW9ucy9pbXBsZW1lbnRhdGlvbi90eXBlc2NyaXB0X3RlbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvSEEsMENBb0NDO0FBeEpELHFEQUFzQztBQU90Qyx3RkFBMEU7QUFFMUUsMEVBQTJEO0FBRTNELCtFQUFrRjtBQUVsRiwyRUFBeUQ7QUFFekQscUVBRWtEO0FBRWxELE1BQU0sRUFBRSxHQUFHO0lBQ1Asb0JBQW9CLEVBQUUsaUNBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckQsMENBQTBDLEVBQUUsbUNBQU0sQ0FBQyxVQUFVLENBQUMsK0JBQStCLENBQUM7SUFDOUYscUJBQXFCLEVBQUUsbUNBQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ3BELHFDQUFxQyxFQUFFLG1DQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDO0lBQ3pGLGdDQUFnQyxFQUFFLG1DQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9FLGdDQUFnQyxFQUFFLG1DQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDO0lBQy9FLGFBQWEsRUFBRSxtQ0FBTSxDQUFDLElBQUksQ0FBQyxNQUFNO0lBQ2pDLHdCQUF3QixFQUFFLG1DQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQy9ELG1CQUFtQixFQUFFLHNCQUFDO0NBQ3pCLENBQUE7QUFFTSxNQUFNLFVBQVUsR0FBRyxDQUN0QixDQUFrQixFQUNsQixFQUVDLEVBQ2MsRUFBRTtJQUNqQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3BD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