tpmkms_4wp 9.3.0-beta.25 → 9.3.0-beta.26

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.
@@ -42,12 +42,20 @@ class API {
42
42
  const reminder = this._objects.reminders.find((r) => r.id == this._objects.current)
43
43
  if (reminder) {
44
44
  if (Array.isArray(reminder.who)) {
45
+ reminder.who = [...reminder.who, user]
45
46
  } else {
46
47
  reminder.who = [reminder.who, user]
47
48
  }
48
49
  }
49
50
  }
50
51
 
52
+ removeUser(user) {
53
+ const reminder = this._objects.reminders.find((r) => r.id == this._objects.current)
54
+ if (reminder) {
55
+ reminder.who = reminder.who.filter((who) => who.remindee_id != user.remindee_id)
56
+ }
57
+ }
58
+
51
59
  addRemindable(id, text) {
52
60
  if (!text) {
53
61
  text = id
@@ -127,20 +135,36 @@ const template = {
127
135
  operators: [
128
136
  "([remindable])",
129
137
  { pattern: "([addRemindable] (word)*)", development: true },
130
- "([remind] (remindable/*) (!@<= 'dateTimeSelector')*)",
131
- "([remind:withDateBridge] (remindable/*) (!@<= 'dateTimeSelector')* (dateTimeSelector))",
132
- "([remind:withDateAndTimeBridge] (remindable/*) (!@<= 'dateTimeSelector')* (dateTimeSelector) (atTime))",
138
+ "([remind:justWhoBridge] (remindable/*))",
139
+ "([remind] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')*)",
140
+ "([remind:withDateBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector))",
141
+ "([remind:withDateAndTimeBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector) (atTime))",
133
142
  "([show] ([reminders]))",
134
143
  "([delete_reminders|delete,cancel] (number/*))",
135
144
  "([add] (remindable/*))",
145
+ "([remove] (remindable/*))",
146
+ "((verb/*) [inAddition|also,too])",
136
147
  ],
137
148
  bridges: [
149
+ {
150
+ id: 'inAddition',
151
+ after: ['verb'],
152
+ bridge: "{ ...before[0], inAddition: true, verb: before[0], operator: operator, interpolate: '${verb} ${operator}' }",
153
+ },
138
154
  {
139
155
  id: 'add',
140
156
  isA: ['verb'],
141
157
  bridge: "{ ...next(operator), arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }",
142
158
  semantic: ({api, context}) => {
143
- api.addUser(context.arg)
159
+ api.addUser(api.contextToWho(context.arg))
160
+ }
161
+ },
162
+ {
163
+ id: 'remove',
164
+ isA: ['verb'],
165
+ bridge: "{ ...next(operator), arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }",
166
+ semantic: ({api, context}) => {
167
+ api.removeUser(api.contextToWho(context.arg))
144
168
  }
145
169
  },
146
170
  {
@@ -155,14 +179,24 @@ const template = {
155
179
  },
156
180
  {
157
181
  id: 'remindable',
182
+ isA: ['listable'],
158
183
  },
159
184
  {
160
185
  id: 'remind',
161
186
  isA: ['verb'],
162
187
  localHierarchy: [['self', 'remindable']],
163
188
  bridge: "{ ...next(operator), operator: operator, who: after[0], reminder: after[1], interpolate: '${operator} ${who} ${reminder}' }",
189
+ justWhoBridge: "{ ...next(operator), operator: operator, who: after[0], interpolate: '${operator} ${who}' }",
164
190
  withDateBridge: "{ ...next(operator), operator: operator, who: after[0], reminder: after[1], date: after[2], interpolate: '${operator} ${who} ${reminder} ${date}' }",
165
191
  withDateAndTimeBridge: "{ ...next(operator), operator: operator, who: after[0], reminder: after[1], date: after[2], time: after[3], interpolate: '${operator} ${who} ${reminder} ${date} ${time}' }",
192
+ semantics: [
193
+ {
194
+ match: ({context}) => context.marker == 'remind' && context.inAddition,
195
+ apply: ({context, api}) => {
196
+ api.addUser(api.contextToWho(context.who))
197
+ }
198
+ },
199
+ ],
166
200
  semantic: async ({api, gsp, gp, context}) => {
167
201
  const text = await gsp(context.reminder.slice(1));
168
202
  const who = api.contextToWho(context.who)