diff options
author | Li Jin <dragon-fly@qq.com> | 2022-04-24 15:35:53 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-04-24 15:35:53 +0800 |
commit | 249e1de1d32dda2b60b9116c5a4e538475de0192 (patch) | |
tree | d62b95ba79cd8b226fe2f8ae172bf646c12bff91 /spec | |
parent | fe6d146bc4454d8096ddd0543d7142db3da5da5b (diff) | |
download | yuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.tar.gz yuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.tar.bz2 yuescript-249e1de1d32dda2b60b9116c5a4e538475de0192.zip |
add support for the Fill Operator. fix issue #39.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/inputs/tables.yue | 19 | ||||
-rw-r--r-- | spec/outputs/tables.lua | 127 |
2 files changed, 121 insertions, 25 deletions
diff --git a/spec/inputs/tables.yue b/spec/inputs/tables.yue index 649c1dc..3a245a7 100644 --- a/spec/inputs/tables.yue +++ b/spec/inputs/tables.yue | |||
@@ -262,5 +262,24 @@ tbMixB = { | |||
262 | 1, 2, 3 | 262 | 1, 2, 3 |
263 | } | 263 | } |
264 | 264 | ||
265 | const template = { | ||
266 | foo: "Hello" | ||
267 | bar: "World" | ||
268 | baz: "!" | ||
269 | } | ||
270 | |||
271 | const specialized = { | ||
272 | ...template | ||
273 | bar: "Bob" | ||
274 | } | ||
275 | |||
276 | specializedB = { | ||
277 | function: -> | ||
278 | ...template | ||
279 | end: -> | ||
280 | if: true | ||
281 | else: false | ||
282 | } | ||
283 | |||
265 | nil | 284 | nil |
266 | 285 | ||
diff --git a/spec/outputs/tables.lua b/spec/outputs/tables.lua index b820122..165706d 100644 --- a/spec/outputs/tables.lua +++ b/spec/outputs/tables.lua | |||
@@ -351,10 +351,14 @@ local menus = { | |||
351 | local tb | 351 | local tb |
352 | do | 352 | do |
353 | local _tab_0 = { } | 353 | local _tab_0 = { } |
354 | local _list_0 = other | 354 | local _idx_0 = 1 |
355 | for _index_0 = 1, #_list_0 do | 355 | for _key_0, _value_0 in pairs(other) do |
356 | local _value_0 = _list_0[_index_0] | 356 | if _idx_0 == _key_0 then |
357 | _tab_0[#_tab_0 + 1] = _value_0 | 357 | _tab_0[#_tab_0 + 1] = _value_0 |
358 | _idx_0 = _idx_0 + 1 | ||
359 | else | ||
360 | _tab_0[_key_0] = _value_0 | ||
361 | end | ||
358 | end | 362 | end |
359 | tb = _tab_0 | 363 | tb = _tab_0 |
360 | end | 364 | end |
@@ -372,9 +376,14 @@ do | |||
372 | _with_0:func() | 376 | _with_0:func() |
373 | _obj_0 = _with_0 | 377 | _obj_0 = _with_0 |
374 | end | 378 | end |
375 | for _index_0 = 1, #_obj_0 do | 379 | local _idx_0 = 1 |
376 | local _value_0 = _obj_0[_index_0] | 380 | for _key_0, _value_0 in pairs(_obj_0) do |
377 | _tab_0[#_tab_0 + 1] = _value_0 | 381 | if _idx_0 == _key_0 then |
382 | _tab_0[#_tab_0 + 1] = _value_0 | ||
383 | _idx_0 = _idx_0 + 1 | ||
384 | else | ||
385 | _tab_0[_key_0] = _value_0 | ||
386 | end | ||
378 | end | 387 | end |
379 | _tab_0[#_tab_0 + 1] = "a" | 388 | _tab_0[#_tab_0 + 1] = "a" |
380 | _tab_0[#_tab_0 + 1] = "b" | 389 | _tab_0[#_tab_0 + 1] = "b" |
@@ -386,9 +395,14 @@ do | |||
386 | _obj_1 = _obj_2() | 395 | _obj_1 = _obj_2() |
387 | end | 396 | end |
388 | end | 397 | end |
389 | for _index_0 = 1, #_obj_1 do | 398 | local _idx_1 = 1 |
390 | local _value_0 = _obj_1[_index_0] | 399 | for _key_0, _value_0 in pairs(_obj_1) do |
391 | _tab_0[#_tab_0 + 1] = _value_0 | 400 | if _idx_1 == _key_0 then |
401 | _tab_0[#_tab_0 + 1] = _value_0 | ||
402 | _idx_1 = _idx_1 + 1 | ||
403 | else | ||
404 | _tab_0[_key_0] = _value_0 | ||
405 | end | ||
392 | end | 406 | end |
393 | _tab_0.key = "value" | 407 | _tab_0.key = "value" |
394 | for _index_0 = 1, select('#', ...) do | 408 | for _index_0 = 1, select('#', ...) do |
@@ -409,9 +423,14 @@ do | |||
409 | end | 423 | end |
410 | _obj_0 = _accum_0 | 424 | _obj_0 = _accum_0 |
411 | end | 425 | end |
412 | for _index_0 = 1, #_obj_0 do | 426 | local _idx_0 = 1 |
413 | local _value_0 = _obj_0[_index_0] | 427 | for _key_0, _value_0 in pairs(_obj_0) do |
414 | _tab_0[#_tab_0 + 1] = _value_0 | 428 | if _idx_0 == _key_0 then |
429 | _tab_0[#_tab_0 + 1] = _value_0 | ||
430 | _idx_0 = _idx_0 + 1 | ||
431 | else | ||
432 | _tab_0[_key_0] = _value_0 | ||
433 | end | ||
415 | end | 434 | end |
416 | _tab_0[#_tab_0 + 1] = 11 | 435 | _tab_0[#_tab_0 + 1] = 11 |
417 | tbMixA = _tab_0 | 436 | tbMixA = _tab_0 |
@@ -420,34 +439,92 @@ local tbMixB | |||
420 | do | 439 | do |
421 | local _tab_0 = { } | 440 | local _tab_0 = { } |
422 | local _obj_0 = ... | 441 | local _obj_0 = ... |
423 | for _index_0 = 1, #_obj_0 do | 442 | local _idx_0 = 1 |
424 | local _value_0 = _obj_0[_index_0] | 443 | for _key_0, _value_0 in pairs(_obj_0) do |
425 | _tab_0[#_tab_0 + 1] = _value_0 | 444 | if _idx_0 == _key_0 then |
445 | _tab_0[#_tab_0 + 1] = _value_0 | ||
446 | _idx_0 = _idx_0 + 1 | ||
447 | else | ||
448 | _tab_0[_key_0] = _value_0 | ||
449 | end | ||
426 | end | 450 | end |
427 | local _obj_1 = { | 451 | local _obj_1 = { |
428 | ... | 452 | ... |
429 | } | 453 | } |
430 | for _index_0 = 1, #_obj_1 do | 454 | local _idx_1 = 1 |
431 | local _value_0 = _obj_1[_index_0] | 455 | for _key_0, _value_0 in pairs(_obj_1) do |
432 | _tab_0[#_tab_0 + 1] = _value_0 | 456 | if _idx_1 == _key_0 then |
457 | _tab_0[#_tab_0 + 1] = _value_0 | ||
458 | _idx_1 = _idx_1 + 1 | ||
459 | else | ||
460 | _tab_0[_key_0] = _value_0 | ||
461 | end | ||
433 | end | 462 | end |
434 | local _obj_2 | 463 | local _obj_2 |
435 | do | 464 | do |
436 | local _tab_1 = { } | 465 | local _tab_1 = { } |
437 | local _obj_3 = ... | 466 | local _obj_3 = ... |
438 | for _index_0 = 1, #_obj_3 do | 467 | local _idx_2 = 1 |
439 | local _value_0 = _obj_3[_index_0] | 468 | for _key_0, _value_0 in pairs(_obj_3) do |
440 | _tab_1[#_tab_1 + 1] = _value_0 | 469 | if _idx_2 == _key_0 then |
470 | _tab_1[#_tab_1 + 1] = _value_0 | ||
471 | _idx_2 = _idx_2 + 1 | ||
472 | else | ||
473 | _tab_1[_key_0] = _value_0 | ||
474 | end | ||
441 | end | 475 | end |
442 | _obj_2 = _tab_1 | 476 | _obj_2 = _tab_1 |
443 | end | 477 | end |
444 | for _index_0 = 1, #_obj_2 do | 478 | local _idx_2 = 1 |
445 | local _value_0 = _obj_2[_index_0] | 479 | for _key_0, _value_0 in pairs(_obj_2) do |
446 | _tab_0[#_tab_0 + 1] = _value_0 | 480 | if _idx_2 == _key_0 then |
481 | _tab_0[#_tab_0 + 1] = _value_0 | ||
482 | _idx_2 = _idx_2 + 1 | ||
483 | else | ||
484 | _tab_0[_key_0] = _value_0 | ||
485 | end | ||
447 | end | 486 | end |
448 | _tab_0[#_tab_0 + 1] = 1 | 487 | _tab_0[#_tab_0 + 1] = 1 |
449 | _tab_0[#_tab_0 + 1] = 2 | 488 | _tab_0[#_tab_0 + 1] = 2 |
450 | _tab_0[#_tab_0 + 1] = 3 | 489 | _tab_0[#_tab_0 + 1] = 3 |
451 | tbMixB = _tab_0 | 490 | tbMixB = _tab_0 |
452 | end | 491 | end |
492 | local template <const> = { | ||
493 | foo = "Hello", | ||
494 | bar = "World", | ||
495 | baz = "!" | ||
496 | } | ||
497 | local specialized <const> = (function() | ||
498 | local _tab_0 = { } | ||
499 | local _idx_0 = 1 | ||
500 | for _key_0, _value_0 in pairs(template) do | ||
501 | if _idx_0 == _key_0 then | ||
502 | _tab_0[#_tab_0 + 1] = _value_0 | ||
503 | _idx_0 = _idx_0 + 1 | ||
504 | else | ||
505 | _tab_0[_key_0] = _value_0 | ||
506 | end | ||
507 | end | ||
508 | _tab_0.bar = "Bob" | ||
509 | return _tab_0 | ||
510 | end)() | ||
511 | local specializedB | ||
512 | do | ||
513 | local _tab_0 = { | ||
514 | ["function"] = function() end | ||
515 | } | ||
516 | local _idx_0 = 1 | ||
517 | for _key_0, _value_0 in pairs(template) do | ||
518 | if _idx_0 == _key_0 then | ||
519 | _tab_0[#_tab_0 + 1] = _value_0 | ||
520 | _idx_0 = _idx_0 + 1 | ||
521 | else | ||
522 | _tab_0[_key_0] = _value_0 | ||
523 | end | ||
524 | end | ||
525 | _tab_0["end"] = function() end | ||
526 | _tab_0["if"] = true | ||
527 | _tab_0["else"] = false | ||
528 | specializedB = _tab_0 | ||
529 | end | ||
453 | return nil | 530 | return nil |