ekms 7.12.4-beta.1 → 7.12.4-beta.2
Sign up to get free protection for your applications and to get access to all the features.
- package/common/fastfood.instance.json +222 -88
- package/common/fastfood.js +88 -9
- package/common/fastfood.test.json +14907 -1382
- package/package.json +2 -2
package/common/fastfood.js
CHANGED
@@ -411,7 +411,7 @@ const template = {
|
|
411
411
|
const to = state.getIdCombo(context.to)
|
412
412
|
for (const item of api.items()) {
|
413
413
|
if (item.id == from.id) {
|
414
|
-
api.modify(item, { id: to.id })
|
414
|
+
api.modify(item, { id: to.id, food: context.to })
|
415
415
|
}
|
416
416
|
}
|
417
417
|
}
|
@@ -432,6 +432,35 @@ const template = {
|
|
432
432
|
{ context: [['combo', 2], ['list', 0], ['combo', 1], ['withModification', 1]], ordered: true, choose: [3] },
|
433
433
|
],
|
434
434
|
},
|
435
|
+
{
|
436
|
+
operators: [
|
437
|
+
"([remove|remove,delete,drop,ditch,forget,no] (food/*))",
|
438
|
+
"([reset|reset,restart,clear])",
|
439
|
+
],
|
440
|
+
bridges: [
|
441
|
+
{
|
442
|
+
id: 'remove',
|
443
|
+
isA: ['verby'],
|
444
|
+
bridge: "{ ...next(operator), remove: after[0], postModifiers: ['remove'] }",
|
445
|
+
semantic: ({context, api}) => {
|
446
|
+
const state = api.state
|
447
|
+
for (const item of api.items()) {
|
448
|
+
if (state.match(context.remove, item)) {
|
449
|
+
api.remove(item)
|
450
|
+
}
|
451
|
+
}
|
452
|
+
}
|
453
|
+
},
|
454
|
+
{
|
455
|
+
id: 'reset',
|
456
|
+
isA: ['verby'],
|
457
|
+
bridge: "{ ...next(operator) }",
|
458
|
+
semantic: ({context, api}) => {
|
459
|
+
api.reset()
|
460
|
+
}
|
461
|
+
},
|
462
|
+
],
|
463
|
+
},
|
435
464
|
],
|
436
465
|
}
|
437
466
|
|
@@ -441,28 +470,53 @@ class API {
|
|
441
470
|
this._objects.items = []
|
442
471
|
this._objects.notAvailable = []
|
443
472
|
this._objects.notAvailableModification = []
|
473
|
+
this._objects.item_id_counter = 0
|
444
474
|
}
|
445
475
|
|
446
476
|
show() {
|
447
477
|
this._objects.show = this._objects.items
|
448
478
|
}
|
449
479
|
|
480
|
+
toItem(item_id) {
|
481
|
+
if (Array.isArray(item_id)) {
|
482
|
+
return this._objects.items[item_id[0]].modifications[item_id[1]]
|
483
|
+
} else {
|
484
|
+
return this._objects.items[item_id]
|
485
|
+
}
|
486
|
+
}
|
487
|
+
|
488
|
+
new_item_id() {
|
489
|
+
const item_id = this._objects.item_id_counter
|
490
|
+
this._objects.item_id_counter += 1
|
491
|
+
return item_id
|
492
|
+
}
|
493
|
+
|
450
494
|
// returns an item id so things can be updated if needed
|
451
495
|
add(item) {
|
452
|
-
item.item_id = this.
|
496
|
+
item.item_id = this.new_item_id()
|
453
497
|
if (!item.modifications) {
|
454
498
|
item.modifications = []
|
455
499
|
}
|
500
|
+
item.modifications.forEach((modification, index) => {
|
501
|
+
modification.item_id = [item.item_id, index]
|
502
|
+
})
|
456
503
|
this._objects.items.push(item)
|
457
|
-
|
504
|
+
}
|
505
|
+
|
506
|
+
reset() {
|
507
|
+
this._objects.items = []
|
458
508
|
}
|
459
509
|
|
460
510
|
get(item_id) {
|
461
|
-
return this.
|
511
|
+
return this.toItem(item_id)
|
462
512
|
}
|
463
513
|
|
464
514
|
modify(item, changes) {
|
465
|
-
Object.assign(this.
|
515
|
+
Object.assign(this.toItem(item.item_id), changes)
|
516
|
+
}
|
517
|
+
|
518
|
+
remove(item) {
|
519
|
+
this._objects.items = this._objects.items.filter( (i) => i.item_id !== item.item_id )
|
466
520
|
}
|
467
521
|
|
468
522
|
items() {
|
@@ -470,8 +524,9 @@ class API {
|
|
470
524
|
}
|
471
525
|
|
472
526
|
addDrink(item_id, drink) {
|
473
|
-
this.
|
474
|
-
|
527
|
+
const item = this.toItem(item_id)
|
528
|
+
item.modifications.push(drink)
|
529
|
+
item.needsDrink = false
|
475
530
|
}
|
476
531
|
|
477
532
|
say(response) {
|
@@ -665,7 +720,7 @@ class State {
|
|
665
720
|
}
|
666
721
|
combo = true
|
667
722
|
} else if (food.marker == 'combo') {
|
668
|
-
id = food.type
|
723
|
+
id = food.type?.value
|
669
724
|
combo = true
|
670
725
|
} else {
|
671
726
|
id = food.value
|
@@ -679,6 +734,18 @@ class State {
|
|
679
734
|
return { id, combo }
|
680
735
|
}
|
681
736
|
|
737
|
+
match(pattern, item) {
|
738
|
+
Object.assign(pattern, this.getIdCombo(pattern))
|
739
|
+
if (pattern.id == item.id) {
|
740
|
+
return true
|
741
|
+
}
|
742
|
+
if (!pattern.id) {
|
743
|
+
if (pattern.combo == item.combo) {
|
744
|
+
return true
|
745
|
+
}
|
746
|
+
}
|
747
|
+
}
|
748
|
+
|
682
749
|
add(food) {
|
683
750
|
let quantity = 1
|
684
751
|
if (food.quantity) {
|
@@ -844,7 +911,19 @@ knowledgeModule( {
|
|
844
911
|
checks: {
|
845
912
|
objects: [
|
846
913
|
'show',
|
847
|
-
{
|
914
|
+
{
|
915
|
+
property: 'items',
|
916
|
+
filter: [
|
917
|
+
'combo',
|
918
|
+
'pieces',
|
919
|
+
'size',
|
920
|
+
'item_id',
|
921
|
+
'id',
|
922
|
+
{ property: 'food', filter: [ 'marker', 'value', 'text' ] },
|
923
|
+
{ property: 'modifications', filter: [ 'id', 'item_id', 'food' ] },
|
924
|
+
'needsDrink'
|
925
|
+
],
|
926
|
+
},
|
848
927
|
'changes',
|
849
928
|
'response',
|
850
929
|
{ property: 'notAvailable', filter: [ 'marker', 'value', 'text' ] },
|