tpmkms_4wp 9.3.0-beta.5 → 9.3.0-beta.51
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/common/animals.instance.json +0 -65
- package/common/asking.js +16 -2
- package/common/colors.instance.json +28 -70
- package/common/comparable.instance.json +0 -15
- package/common/concept.test.json +279 -193
- package/common/crew.instance.json +0 -166
- package/common/dateTimeSelectors.instance.json +151 -0
- package/common/dateTimeSelectors.js +171 -0
- package/common/dateTimeSelectors.test.json +85622 -0
- package/common/dates.instance.json +285 -479
- package/common/dates.js +111 -10
- package/common/dates.test.json +11021 -514
- package/common/dialogues.js +8 -46
- package/common/dimension.instance.json +0 -5
- package/common/edible.instance.json +56 -160
- package/common/emotions.instance.json +0 -5
- package/common/evaluate.js +1 -1
- package/common/events.js +1 -1
- package/common/fastfood.instance.json +149 -880
- package/common/fastfood.test.json +16291 -6597
- package/common/formulas.instance.json +0 -5
- package/common/helpers/dateTimeSelectors.js +198 -0
- package/common/helpers/dialogues.js +11 -8
- package/common/helpers/properties.js +2 -2
- package/common/helpers.js +57 -32
- package/common/hierarchy.js +9 -9
- package/common/kirk.instance.json +0 -5
- package/common/length.instance.json +0 -75
- package/common/math.instance.json +0 -5
- package/common/menus.instance.json +0 -35
- package/common/meta.js +2 -2
- package/common/numbers.js +1 -1
- package/common/numbers.test.json +89 -23
- package/common/ordering.instance.json +0 -10
- package/common/people.instance.json +36 -40
- package/common/percentages.js +1 -1
- package/common/pipboy.instance.json +56 -85
- package/common/pipboy.test.json +4377 -3386
- package/common/pokemon.instance.json +0 -65
- package/common/pressure.instance.json +0 -20
- package/common/properties.instance.json +0 -5
- package/common/properties.js +4 -4
- package/common/reminders.instance.json +196 -10
- package/common/reminders.js +273 -79
- package/common/reminders.test.json +71435 -23
- package/common/reports.instance.json +2 -12
- package/common/scorekeeper.test.json +3565 -7550
- package/common/spock.instance.json +0 -5
- package/common/temperature.instance.json +112 -20
- package/common/time.js +63 -30
- package/common/time.test.json +4124 -124
- package/common/ui.instance.json +0 -5
- package/common/ui.js +3 -1
- package/common/weight.instance.json +0 -60
- package/common/wp.instance.json +56 -70
- package/common/wp.test.json +8057 -3867
- package/main.js +2 -0
- package/package.json +8 -4
@@ -360,11 +360,6 @@
|
|
360
360
|
"theAble",
|
361
361
|
false
|
362
362
|
],
|
363
|
-
[
|
364
|
-
"evaluate",
|
365
|
-
"verb",
|
366
|
-
false
|
367
|
-
],
|
368
363
|
[
|
369
364
|
"every",
|
370
365
|
"article",
|
@@ -1625,11 +1620,6 @@
|
|
1625
1620
|
"theAble",
|
1626
1621
|
false
|
1627
1622
|
],
|
1628
|
-
[
|
1629
|
-
"evaluate",
|
1630
|
-
"verb",
|
1631
|
-
false
|
1632
|
-
],
|
1633
1623
|
[
|
1634
1624
|
"every",
|
1635
1625
|
"article",
|
@@ -3317,11 +3307,6 @@
|
|
3317
3307
|
"theAble",
|
3318
3308
|
false
|
3319
3309
|
],
|
3320
|
-
[
|
3321
|
-
"evaluate",
|
3322
|
-
"verb",
|
3323
|
-
false
|
3324
|
-
],
|
3325
3310
|
[
|
3326
3311
|
"every",
|
3327
3312
|
"article",
|
@@ -5097,11 +5082,6 @@
|
|
5097
5082
|
"theAble",
|
5098
5083
|
false
|
5099
5084
|
],
|
5100
|
-
[
|
5101
|
-
"evaluate",
|
5102
|
-
"verb",
|
5103
|
-
false
|
5104
|
-
],
|
5105
5085
|
[
|
5106
5086
|
"every",
|
5107
5087
|
"article",
|
@@ -6912,11 +6892,6 @@
|
|
6912
6892
|
"theAble",
|
6913
6893
|
false
|
6914
6894
|
],
|
6915
|
-
[
|
6916
|
-
"evaluate",
|
6917
|
-
"verb",
|
6918
|
-
false
|
6919
|
-
],
|
6920
6895
|
[
|
6921
6896
|
"every",
|
6922
6897
|
"article",
|
@@ -8569,11 +8544,6 @@
|
|
8569
8544
|
"theAble",
|
8570
8545
|
false
|
8571
8546
|
],
|
8572
|
-
[
|
8573
|
-
"evaluate",
|
8574
|
-
"verb",
|
8575
|
-
false
|
8576
|
-
],
|
8577
8547
|
[
|
8578
8548
|
"every",
|
8579
8549
|
"article",
|
@@ -10292,11 +10262,6 @@
|
|
10292
10262
|
"theAble",
|
10293
10263
|
false
|
10294
10264
|
],
|
10295
|
-
[
|
10296
|
-
"evaluate",
|
10297
|
-
"verb",
|
10298
|
-
false
|
10299
|
-
],
|
10300
10265
|
[
|
10301
10266
|
"every",
|
10302
10267
|
"article",
|
@@ -12183,11 +12148,6 @@
|
|
12183
12148
|
"theAble",
|
12184
12149
|
false
|
12185
12150
|
],
|
12186
|
-
[
|
12187
|
-
"evaluate",
|
12188
|
-
"verb",
|
12189
|
-
false
|
12190
|
-
],
|
12191
12151
|
[
|
12192
12152
|
"every",
|
12193
12153
|
"article",
|
@@ -14123,11 +14083,6 @@
|
|
14123
14083
|
"theAble",
|
14124
14084
|
false
|
14125
14085
|
],
|
14126
|
-
[
|
14127
|
-
"evaluate",
|
14128
|
-
"verb",
|
14129
|
-
false
|
14130
|
-
],
|
14131
14086
|
[
|
14132
14087
|
"every",
|
14133
14088
|
"article",
|
@@ -16076,11 +16031,6 @@
|
|
16076
16031
|
"theAble",
|
16077
16032
|
false
|
16078
16033
|
],
|
16079
|
-
[
|
16080
|
-
"evaluate",
|
16081
|
-
"verb",
|
16082
|
-
false
|
16083
|
-
],
|
16084
16034
|
[
|
16085
16035
|
"every",
|
16086
16036
|
"article",
|
@@ -17818,11 +17768,6 @@
|
|
17818
17768
|
"theAble",
|
17819
17769
|
false
|
17820
17770
|
],
|
17821
|
-
[
|
17822
|
-
"evaluate",
|
17823
|
-
"verb",
|
17824
|
-
false
|
17825
|
-
],
|
17826
17771
|
[
|
17827
17772
|
"every",
|
17828
17773
|
"article",
|
@@ -19626,11 +19571,6 @@
|
|
19626
19571
|
"theAble",
|
19627
19572
|
false
|
19628
19573
|
],
|
19629
|
-
[
|
19630
|
-
"evaluate",
|
19631
|
-
"verb",
|
19632
|
-
false
|
19633
|
-
],
|
19634
19574
|
[
|
19635
19575
|
"every",
|
19636
19576
|
"article",
|
@@ -21615,11 +21555,6 @@
|
|
21615
21555
|
"theAble",
|
21616
21556
|
false
|
21617
21557
|
],
|
21618
|
-
[
|
21619
|
-
"evaluate",
|
21620
|
-
"verb",
|
21621
|
-
false
|
21622
|
-
],
|
21623
21558
|
[
|
21624
21559
|
"every",
|
21625
21560
|
"article",
|
@@ -22751,24 +22686,6 @@
|
|
22751
22686
|
0
|
22752
22687
|
]
|
22753
22688
|
],
|
22754
|
-
[
|
22755
|
-
[
|
22756
|
-
"is",
|
22757
|
-
0
|
22758
|
-
],
|
22759
|
-
[
|
22760
|
-
"mccoy",
|
22761
|
-
0
|
22762
|
-
],
|
22763
|
-
[
|
22764
|
-
"name",
|
22765
|
-
0
|
22766
|
-
],
|
22767
|
-
[
|
22768
|
-
"possession",
|
22769
|
-
0
|
22770
|
-
]
|
22771
|
-
],
|
22772
22689
|
[
|
22773
22690
|
[
|
22774
22691
|
"is",
|
@@ -23645,11 +23562,6 @@
|
|
23645
23562
|
"theAble",
|
23646
23563
|
false
|
23647
23564
|
],
|
23648
|
-
[
|
23649
|
-
"evaluate",
|
23650
|
-
"verb",
|
23651
|
-
false
|
23652
|
-
],
|
23653
23565
|
[
|
23654
23566
|
"every",
|
23655
23567
|
"article",
|
@@ -25688,11 +25600,6 @@
|
|
25688
25600
|
"theAble",
|
25689
25601
|
false
|
25690
25602
|
],
|
25691
|
-
[
|
25692
|
-
"evaluate",
|
25693
|
-
"verb",
|
25694
|
-
false
|
25695
|
-
],
|
25696
25603
|
[
|
25697
25604
|
"every",
|
25698
25605
|
"article",
|
@@ -27546,11 +27453,6 @@
|
|
27546
27453
|
"theAble",
|
27547
27454
|
false
|
27548
27455
|
],
|
27549
|
-
[
|
27550
|
-
"evaluate",
|
27551
|
-
"verb",
|
27552
|
-
false
|
27553
|
-
],
|
27554
27456
|
[
|
27555
27457
|
"every",
|
27556
27458
|
"article",
|
@@ -29347,11 +29249,6 @@
|
|
29347
29249
|
"theAble",
|
29348
29250
|
false
|
29349
29251
|
],
|
29350
|
-
[
|
29351
|
-
"evaluate",
|
29352
|
-
"verb",
|
29353
|
-
false
|
29354
|
-
],
|
29355
29252
|
[
|
29356
29253
|
"every",
|
29357
29254
|
"article",
|
@@ -31687,11 +31584,6 @@
|
|
31687
31584
|
"theAble",
|
31688
31585
|
false
|
31689
31586
|
],
|
31690
|
-
[
|
31691
|
-
"evaluate",
|
31692
|
-
"verb",
|
31693
|
-
false
|
31694
|
-
],
|
31695
31587
|
[
|
31696
31588
|
"every",
|
31697
31589
|
"article",
|
@@ -33392,11 +33284,6 @@
|
|
33392
33284
|
"theAble",
|
33393
33285
|
false
|
33394
33286
|
],
|
33395
|
-
[
|
33396
|
-
"evaluate",
|
33397
|
-
"verb",
|
33398
|
-
false
|
33399
|
-
],
|
33400
33287
|
[
|
33401
33288
|
"every",
|
33402
33289
|
"article",
|
@@ -36070,11 +35957,6 @@
|
|
36070
35957
|
"theAble",
|
36071
35958
|
false
|
36072
35959
|
],
|
36073
|
-
[
|
36074
|
-
"evaluate",
|
36075
|
-
"verb",
|
36076
|
-
false
|
36077
|
-
],
|
36078
35960
|
[
|
36079
35961
|
"every",
|
36080
35962
|
"article",
|
@@ -37956,11 +37838,6 @@
|
|
37956
37838
|
"theAble",
|
37957
37839
|
false
|
37958
37840
|
],
|
37959
|
-
[
|
37960
|
-
"evaluate",
|
37961
|
-
"verb",
|
37962
|
-
false
|
37963
|
-
],
|
37964
37841
|
[
|
37965
37842
|
"every",
|
37966
37843
|
"article",
|
@@ -39852,11 +39729,6 @@
|
|
39852
39729
|
"theAble",
|
39853
39730
|
false
|
39854
39731
|
],
|
39855
|
-
[
|
39856
|
-
"evaluate",
|
39857
|
-
"verb",
|
39858
|
-
false
|
39859
|
-
],
|
39860
39732
|
[
|
39861
39733
|
"every",
|
39862
39734
|
"article",
|
@@ -41697,11 +41569,6 @@
|
|
41697
41569
|
"theAble",
|
41698
41570
|
false
|
41699
41571
|
],
|
41700
|
-
[
|
41701
|
-
"evaluate",
|
41702
|
-
"verb",
|
41703
|
-
false
|
41704
|
-
],
|
41705
41572
|
[
|
41706
41573
|
"every",
|
41707
41574
|
"article",
|
@@ -43542,11 +43409,6 @@
|
|
43542
43409
|
"theAble",
|
43543
43410
|
false
|
43544
43411
|
],
|
43545
|
-
[
|
43546
|
-
"evaluate",
|
43547
|
-
"verb",
|
43548
|
-
false
|
43549
|
-
],
|
43550
43412
|
[
|
43551
43413
|
"every",
|
43552
43414
|
"article",
|
@@ -45387,11 +45249,6 @@
|
|
45387
45249
|
"theAble",
|
45388
45250
|
false
|
45389
45251
|
],
|
45390
|
-
[
|
45391
|
-
"evaluate",
|
45392
|
-
"verb",
|
45393
|
-
false
|
45394
|
-
],
|
45395
45252
|
[
|
45396
45253
|
"every",
|
45397
45254
|
"article",
|
@@ -48836,11 +48693,6 @@
|
|
48836
48693
|
"theAble",
|
48837
48694
|
false
|
48838
48695
|
],
|
48839
|
-
[
|
48840
|
-
"evaluate",
|
48841
|
-
"verb",
|
48842
|
-
false
|
48843
|
-
],
|
48844
48696
|
[
|
48845
48697
|
"every",
|
48846
48698
|
"article",
|
@@ -52676,24 +52528,6 @@
|
|
52676
52528
|
0
|
52677
52529
|
]
|
52678
52530
|
],
|
52679
|
-
[
|
52680
|
-
[
|
52681
|
-
"is",
|
52682
|
-
0
|
52683
|
-
],
|
52684
|
-
[
|
52685
|
-
"mccoy",
|
52686
|
-
0
|
52687
|
-
],
|
52688
|
-
[
|
52689
|
-
"name",
|
52690
|
-
0
|
52691
|
-
],
|
52692
|
-
[
|
52693
|
-
"possession",
|
52694
|
-
0
|
52695
|
-
]
|
52696
|
-
],
|
52697
52531
|
[
|
52698
52532
|
[
|
52699
52533
|
"is",
|
@@ -0,0 +1,151 @@
|
|
1
|
+
{
|
2
|
+
"configs": [
|
3
|
+
{
|
4
|
+
"operators": [
|
5
|
+
"([dateTimeSelector] (onDate) (atTime))",
|
6
|
+
"((day_dates/*) [dayOfMonth|of] (month_dates/*))",
|
7
|
+
"((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))"
|
8
|
+
],
|
9
|
+
"bridges": [
|
10
|
+
{
|
11
|
+
"id": "dayOfMonth",
|
12
|
+
"after": [
|
13
|
+
"article"
|
14
|
+
],
|
15
|
+
"isA": [
|
16
|
+
"onDateValue_dates"
|
17
|
+
],
|
18
|
+
"before": [
|
19
|
+
"verb",
|
20
|
+
"onDate_dates"
|
21
|
+
],
|
22
|
+
"bridge": "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }"
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"id": "dayAfterDate",
|
26
|
+
"after": [
|
27
|
+
"article",
|
28
|
+
"monthDayYear_dates"
|
29
|
+
],
|
30
|
+
"isA": [
|
31
|
+
"onDateValue_dates"
|
32
|
+
],
|
33
|
+
"before": [
|
34
|
+
"verb",
|
35
|
+
"afterDate_dates"
|
36
|
+
],
|
37
|
+
"bridge": "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }"
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"id": "dateTimeSelector",
|
41
|
+
"after": [
|
42
|
+
"preposition"
|
43
|
+
],
|
44
|
+
"before": [
|
45
|
+
"verb"
|
46
|
+
],
|
47
|
+
"convolution": true,
|
48
|
+
"children": [
|
49
|
+
"onDate_dates",
|
50
|
+
"atTime",
|
51
|
+
"date_dates"
|
52
|
+
],
|
53
|
+
"bridge": "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }"
|
54
|
+
}
|
55
|
+
],
|
56
|
+
"semantics": [
|
57
|
+
{
|
58
|
+
"match": "({context, isA}) => context.evaluate && onOrIs('dayAfterDate', context)",
|
59
|
+
"apply": "async ({context, isProcess, isTest, kms, isA, e}) => {\n try {\n const now = kms.time.api.now()\n const date = afterOrIs('dayAfterDate', context)\n const afterISO = (await e(date.after)).evalue\n const day_ordinal = date.day.day_ordinal\n const ordinal = date.day.ordinal.value\n context.evalue = dateTimeSelectors_helpers.getNthWeekdayAfterDate(afterISO, day_ordinal, ordinal)\n } catch ( e ) {\n context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`\n }\n }"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"match": "({context, isA}) => context.evaluate && onOrIs('dayOfMonth', context)",
|
63
|
+
"apply": "({context, isProcess, isTest, kms, isA}) => {\n try {\n const now = kms.time.api.now()\n const date = onOrIs('dayOfMonth', context)\n context.evalue = dateTimeSelectors_helpers.getNthDayOfMonth(removeDatesSuffix(date.day.value), date.day.ordinal.value || 1, removeDatesSuffix(date.month.value), now)\n } catch ( e ) {\n context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`\n }\n }"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"match": "({context, isA}) => {\n if (!context.evaluate) {\n return false\n }\n if (isA(context.marker, 'onDateValue_dates')) {\n return true\n }\n if (isA(context.marker, 'dateTimeSelector')) {\n return true\n }\n }",
|
67
|
+
"apply": "({context, isProcess, isTest, kms, isA}) => {\n context.evalue = instantiate(kms, isA, isProcess || isTest || context.isTest, context)\n }"
|
68
|
+
}
|
69
|
+
],
|
70
|
+
"hierarchy": [
|
71
|
+
[
|
72
|
+
"day_dates",
|
73
|
+
"orderable"
|
74
|
+
]
|
75
|
+
]
|
76
|
+
}
|
77
|
+
],
|
78
|
+
"resultss": [
|
79
|
+
{
|
80
|
+
"extraConfig": true,
|
81
|
+
"operators": [
|
82
|
+
"([dateTimeSelector] (onDate) (atTime))",
|
83
|
+
"((day_dates/*) [dayOfMonth|of] (month_dates/*))",
|
84
|
+
"((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))"
|
85
|
+
],
|
86
|
+
"bridges": [
|
87
|
+
{
|
88
|
+
"id": "dayOfMonth",
|
89
|
+
"after": [
|
90
|
+
"article"
|
91
|
+
],
|
92
|
+
"isA": [
|
93
|
+
"onDateValue_dates"
|
94
|
+
],
|
95
|
+
"before": [
|
96
|
+
"verb",
|
97
|
+
"onDate_dates"
|
98
|
+
],
|
99
|
+
"bridge": "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }"
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"id": "dayAfterDate",
|
103
|
+
"after": [
|
104
|
+
"article",
|
105
|
+
"monthDayYear_dates"
|
106
|
+
],
|
107
|
+
"isA": [
|
108
|
+
"onDateValue_dates"
|
109
|
+
],
|
110
|
+
"before": [
|
111
|
+
"verb",
|
112
|
+
"afterDate_dates"
|
113
|
+
],
|
114
|
+
"bridge": "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }"
|
115
|
+
},
|
116
|
+
{
|
117
|
+
"id": "dateTimeSelector",
|
118
|
+
"after": [
|
119
|
+
"preposition"
|
120
|
+
],
|
121
|
+
"before": [
|
122
|
+
"verb"
|
123
|
+
],
|
124
|
+
"convolution": true,
|
125
|
+
"children": [
|
126
|
+
"onDate_dates",
|
127
|
+
"atTime",
|
128
|
+
"date_dates"
|
129
|
+
],
|
130
|
+
"bridge": "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }"
|
131
|
+
}
|
132
|
+
],
|
133
|
+
"semantics": [
|
134
|
+
{},
|
135
|
+
{},
|
136
|
+
{}
|
137
|
+
],
|
138
|
+
"hierarchy": [
|
139
|
+
[
|
140
|
+
"day_dates",
|
141
|
+
"orderable"
|
142
|
+
]
|
143
|
+
]
|
144
|
+
}
|
145
|
+
],
|
146
|
+
"fragments": [],
|
147
|
+
"semantics": [],
|
148
|
+
"associations": [],
|
149
|
+
"summaries": [],
|
150
|
+
"learned_contextual_priorities": []
|
151
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
const { knowledgeModule, where } = require('./runtime').theprogrammablemind
|
2
|
+
const { defaultContextCheck } = require('./helpers')
|
3
|
+
const dateTimeSelectors_tests = require('./dateTimeSelectors.test.json')
|
4
|
+
const dateTimeSelectors_instance = require('./dateTimeSelectors.instance.json')
|
5
|
+
const dates = require('./dates')
|
6
|
+
const time = require('./time')
|
7
|
+
const dateTimeSelectors_helpers = require('./helpers/dateTimeSelectors')
|
8
|
+
|
9
|
+
/*
|
10
|
+
friday instead
|
11
|
+
change it to friday
|
12
|
+
delete it
|
13
|
+
make it friday instead
|
14
|
+
2 sundays from now
|
15
|
+
2 sundays from last tuesday
|
16
|
+
the sunday after july 1st
|
17
|
+
the first tuesday after july 1st
|
18
|
+
the first tuesday on or after july 1st
|
19
|
+
the last tuesday of every month
|
20
|
+
the last tuesday of every third month
|
21
|
+
monday at 10 am
|
22
|
+
10 am
|
23
|
+
first monday after jan 1
|
24
|
+
*/
|
25
|
+
|
26
|
+
function instantiate(kms, isA, isProcessOrTest, dateTimeSelector) {
|
27
|
+
try {
|
28
|
+
const now = kms.time.api.now()
|
29
|
+
return dateTimeSelectors_helpers.instantiate(isA, now, dateTimeSelector)
|
30
|
+
} catch ( e ) {
|
31
|
+
return `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}`
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
function removeDatesSuffix(str) {
|
36
|
+
if (str.endsWith('_dates')) {
|
37
|
+
return str.slice(0, -6); // Removes last 6 characters
|
38
|
+
}
|
39
|
+
return str;
|
40
|
+
}
|
41
|
+
|
42
|
+
function onOrIs(marker, context) {
|
43
|
+
if (context.marker === marker) {
|
44
|
+
return context
|
45
|
+
}
|
46
|
+
if (context.marker === 'onDate_dates' && context.date?.marker == marker) {
|
47
|
+
return context.date
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
function afterOrIs(marker, context) {
|
52
|
+
if (context.marker === marker) {
|
53
|
+
return context
|
54
|
+
}
|
55
|
+
if (context.marker === 'onDate_dates' && context.date?.marker == marker) {
|
56
|
+
return context.date
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
const template = {
|
61
|
+
configs: [
|
62
|
+
{
|
63
|
+
operators: [
|
64
|
+
"([dateTimeSelector] (onDate) (atTime))",
|
65
|
+
"((day_dates/*) [dayOfMonth|of] (month_dates/*))",
|
66
|
+
"((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))",
|
67
|
+
],
|
68
|
+
bridges: [
|
69
|
+
{
|
70
|
+
id: 'dayOfMonth',
|
71
|
+
after: ['article'],
|
72
|
+
isA: ['onDateValue_dates'],
|
73
|
+
before: ['verb', 'onDate_dates'],
|
74
|
+
bridge: "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }",
|
75
|
+
},
|
76
|
+
{
|
77
|
+
id: 'dayAfterDate',
|
78
|
+
after: ['article', 'monthDayYear_dates'],
|
79
|
+
isA: ['onDateValue_dates'],
|
80
|
+
before: ['verb', 'afterDate_dates'],
|
81
|
+
bridge: "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }",
|
82
|
+
},
|
83
|
+
{
|
84
|
+
id: 'dateTimeSelector',
|
85
|
+
after: ['preposition'],
|
86
|
+
before: ['verb'],
|
87
|
+
convolution: true,
|
88
|
+
children: ['onDate_dates', 'atTime', 'date_dates'],
|
89
|
+
bridge: "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }",
|
90
|
+
},
|
91
|
+
],
|
92
|
+
semantics: [
|
93
|
+
{
|
94
|
+
match: ({context, isA}) => context.evaluate && onOrIs('dayAfterDate', context),
|
95
|
+
apply: async ({context, isProcess, isTest, kms, isA, e}) => {
|
96
|
+
try {
|
97
|
+
const now = kms.time.api.now()
|
98
|
+
const date = afterOrIs('dayAfterDate', context)
|
99
|
+
const afterISO = (await e(date.after)).evalue
|
100
|
+
const day_ordinal = date.day.day_ordinal
|
101
|
+
const ordinal = date.day.ordinal.value
|
102
|
+
context.evalue = dateTimeSelectors_helpers.getNthWeekdayAfterDate(afterISO, day_ordinal, ordinal)
|
103
|
+
} catch ( e ) {
|
104
|
+
context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`
|
105
|
+
}
|
106
|
+
},
|
107
|
+
},
|
108
|
+
{
|
109
|
+
match: ({context, isA}) => context.evaluate && onOrIs('dayOfMonth', context),
|
110
|
+
apply: ({context, isProcess, isTest, kms, isA}) => {
|
111
|
+
try {
|
112
|
+
const now = kms.time.api.now()
|
113
|
+
const date = onOrIs('dayOfMonth', context)
|
114
|
+
context.evalue = dateTimeSelectors_helpers.getNthDayOfMonth(removeDatesSuffix(date.day.value), date.day.ordinal.value || 1, removeDatesSuffix(date.month.value), now)
|
115
|
+
} catch ( e ) {
|
116
|
+
context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`
|
117
|
+
}
|
118
|
+
},
|
119
|
+
},
|
120
|
+
{
|
121
|
+
match: ({context, isA}) => {
|
122
|
+
if (!context.evaluate) {
|
123
|
+
return false
|
124
|
+
}
|
125
|
+
if (isA(context.marker, 'onDateValue_dates')) {
|
126
|
+
return true
|
127
|
+
}
|
128
|
+
if (isA(context.marker, 'dateTimeSelector')) {
|
129
|
+
return true
|
130
|
+
}
|
131
|
+
},
|
132
|
+
apply: ({context, isProcess, isTest, kms, isA}) => {
|
133
|
+
context.evalue = instantiate(kms, isA, isProcess || isTest || context.isTest, context)
|
134
|
+
},
|
135
|
+
}
|
136
|
+
],
|
137
|
+
hierarchy: [
|
138
|
+
['day_dates', 'orderable'],
|
139
|
+
],
|
140
|
+
},
|
141
|
+
],
|
142
|
+
}
|
143
|
+
|
144
|
+
knowledgeModule( {
|
145
|
+
config: { name: 'dateTimeSelectors' },
|
146
|
+
includes: [time, dates],
|
147
|
+
|
148
|
+
module,
|
149
|
+
description: 'talking about date and time selectors',
|
150
|
+
test: {
|
151
|
+
name: './dateTimeSelectors.test.json',
|
152
|
+
contents: dateTimeSelectors_tests,
|
153
|
+
checks: {
|
154
|
+
context: defaultContextCheck([
|
155
|
+
'date', 'time', 'response',
|
156
|
+
{
|
157
|
+
value: {
|
158
|
+
date: { variable: 'defaults' },
|
159
|
+
time: { variable: 'defaults' },
|
160
|
+
evalue: { variable: 'defaults' },
|
161
|
+
},
|
162
|
+
}
|
163
|
+
]),
|
164
|
+
},
|
165
|
+
},
|
166
|
+
template: {
|
167
|
+
template,
|
168
|
+
instance: dateTimeSelectors_instance,
|
169
|
+
},
|
170
|
+
|
171
|
+
})
|