theprogrammablemind_4wp 8.3.0 → 8.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/src/config.js +46 -21
- package/src/configHelpers.js +23 -9
- package/src/helpers.js +13 -13
package/package.json
CHANGED
package/src/config.js
CHANGED
@@ -387,32 +387,53 @@ const handleBridgeProps = (config, bridge, { addFirst, uuid } = {}) => {
|
|
387
387
|
config.config.generators.push(addUUID(generator))
|
388
388
|
}
|
389
389
|
}
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
390
|
+
|
391
|
+
const addSemantic = (semantic, evaluate) => {
|
392
|
+
const match = semantic.match || (() => true)
|
393
|
+
let apply = semantic
|
394
|
+
// if I do apply == semantic.apply or semantic there is one function that has apply defined for some reason even though not explicitly set
|
395
|
+
if (semantic.apply && typeof semantic !== 'function') {
|
396
|
+
apply = semantic.apply
|
397
|
+
}
|
398
|
+
const semanticDef = {
|
399
|
+
where: semantic.where || bridge.where || helpers.where(4),
|
400
|
+
match: (args) => bridge.id == args.context.marker && !!args.context.evaluate == evaluate && match(args),
|
401
|
+
apply: (args) => apply(args),
|
402
|
+
applyWrapped: semantic,
|
403
|
+
property: evaluate ? 'evaluator':'semantic',
|
397
404
|
}
|
398
405
|
if (addFirst) {
|
399
|
-
config.config.semantics.unshift(addUUID(
|
406
|
+
config.config.semantics.unshift(addUUID(semanticDef))
|
400
407
|
} else {
|
401
|
-
config.config.semantics.push(addUUID(
|
408
|
+
config.config.semantics.push(addUUID(semanticDef))
|
402
409
|
}
|
403
410
|
}
|
411
|
+
|
412
|
+
if (bridge.evaluator) {
|
413
|
+
addSemantic(bridge.evaluator, true)
|
414
|
+
}
|
415
|
+
|
404
416
|
if (bridge.semantic) {
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
417
|
+
addSemantic(bridge.semantic, false)
|
418
|
+
}
|
419
|
+
|
420
|
+
if (bridge.evaluators) {
|
421
|
+
const evaluators = [...bridge.evaluators]
|
422
|
+
evaluators.reverse()
|
423
|
+
if (evaluators) {
|
424
|
+
for (const evaluator of evaluators) {
|
425
|
+
addSemantic(evaluator, true)
|
426
|
+
}
|
411
427
|
}
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
428
|
+
}
|
429
|
+
|
430
|
+
if (bridge.semantics) {
|
431
|
+
const semantics = [...bridge.semantics]
|
432
|
+
semantics.reverse()
|
433
|
+
if (semantics) {
|
434
|
+
for (const semantic of semantics) {
|
435
|
+
addSemantic(semantic, false)
|
436
|
+
}
|
416
437
|
}
|
417
438
|
}
|
418
439
|
}
|
@@ -423,8 +444,8 @@ const handleCalculatedProps = (baseConfig, moreConfig, { addFirst, uuid } = {})
|
|
423
444
|
if (moreConfig.bridges) {
|
424
445
|
moreConfig.bridges = moreConfig.bridges.map((bridge) => {
|
425
446
|
bridge = { ...bridge }
|
426
|
-
const valid = ['after', 'before', 'bridge', 'development', 'evaluator', 'generatorp', 'generatorr', 'generatorpr', 'generators', 'operator', 'id', 'convolution', 'inverted', 'isA', 'children', 'parents',
|
427
|
-
'level', 'optional', 'selector', 'semantic', 'words', /Bridge$/, 'localHierarchy', 'levelSpecificHierarchy', 'where', 'uuid']
|
447
|
+
const valid = ['after', 'before', 'bridge', 'development', 'evaluator', 'evaluators', 'generatorp', 'generatorr', 'generatorpr', 'generators', 'operator', 'id', 'convolution', 'inverted', 'isA', 'children', 'parents',
|
448
|
+
'level', 'optional', 'selector', 'semantic', 'semantics', 'words', /Bridge$/, 'localHierarchy', 'levelSpecificHierarchy', 'where', 'uuid']
|
428
449
|
helpers.validProps(valid, bridge, 'bridge')
|
429
450
|
handleBridgeProps(baseConfig, bridge, { addFirst, uuid })
|
430
451
|
return bridge
|
@@ -1149,13 +1170,16 @@ class Config {
|
|
1149
1170
|
delete bridge.generatorr
|
1150
1171
|
delete bridge.generatorpr
|
1151
1172
|
delete bridge.evaluator
|
1173
|
+
delete bridge.evaluators
|
1152
1174
|
delete bridge.semantic
|
1175
|
+
delete bridge.semantics
|
1153
1176
|
if (!bridge.bridge) {
|
1154
1177
|
bridge.bridge = "{ ...next(operator) }"
|
1155
1178
|
}
|
1156
1179
|
return bridge
|
1157
1180
|
})
|
1158
1181
|
} else {
|
1182
|
+
/* done in updateQueries now
|
1159
1183
|
config.generators = (config.generators || []).map((generator) => {
|
1160
1184
|
generator = { ...generator }
|
1161
1185
|
delete generator.where
|
@@ -1190,6 +1214,7 @@ class Config {
|
|
1190
1214
|
}
|
1191
1215
|
return bridge
|
1192
1216
|
})
|
1217
|
+
*/
|
1193
1218
|
}
|
1194
1219
|
return config
|
1195
1220
|
}
|
package/src/configHelpers.js
CHANGED
@@ -40,17 +40,32 @@ const asList = (context) => {
|
|
40
40
|
}
|
41
41
|
}
|
42
42
|
|
43
|
-
const isA = (hierarchy) => (child, parent) => {
|
43
|
+
const isA = (hierarchy) => (child, parent, { extended=false } = {}) => {
|
44
44
|
if (!child || !parent) {
|
45
45
|
return false
|
46
46
|
}
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
|
48
|
+
if (extended) {
|
49
|
+
if (hierarchy.isA(child.marker || child, parent.marker || parent)) {
|
50
|
+
return true
|
51
|
+
}
|
52
|
+
for (const childT of child.types || [child]) {
|
53
|
+
for (const parentT of parent.types || [parent]) {
|
54
|
+
if (hierarchy.isA(childT, parentT)) {
|
55
|
+
return true
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
return false
|
60
|
+
} else {
|
61
|
+
if (child.marker) {
|
62
|
+
child = child.marker
|
63
|
+
}
|
64
|
+
if (parent.marker) {
|
65
|
+
parent = parent.marker
|
66
|
+
}
|
67
|
+
return hierarchy.isA(child, parent)
|
52
68
|
}
|
53
|
-
return hierarchy.isA(child, parent)
|
54
69
|
}
|
55
70
|
|
56
71
|
class ErrorReason extends Error {
|
@@ -278,7 +293,7 @@ const processContextsB = async ({ config, hierarchy, semantics, generators, json
|
|
278
293
|
const contexts = setupContexts(json.contexts)
|
279
294
|
|
280
295
|
const objects = config.get('objects')
|
281
|
-
const args = { objects, isResponse: true, response: json, isTest, isInstance, getObjects: getObjects(objects), instance }
|
296
|
+
const args = { objects, isResponse: true, response: json, isTest, isInstance, getObjects: getObjects(objects), instance, contexts }
|
282
297
|
if (!json.logs) {
|
283
298
|
json.logs = []
|
284
299
|
}
|
@@ -306,7 +321,6 @@ const processContextsB = async ({ config, hierarchy, semantics, generators, json
|
|
306
321
|
const mostCalled = semantics.getMostCalled()
|
307
322
|
e.message += `\nThe most called semantic was:\nnotes: ${mostCalled.notes}\nmatch: ${mostCalled.matcher.toString()}\napply: ${mostCalled._apply.toString()}\n`
|
308
323
|
}
|
309
|
-
// contextPrime = semantics.apply(args, { marker: 'error', context, error: e })
|
310
324
|
if (isInstance) {
|
311
325
|
console.log('error', e.error)
|
312
326
|
}
|
package/src/helpers.js
CHANGED
@@ -312,24 +312,18 @@ const updateQueries = (queryOrConfig) => {
|
|
312
312
|
|
313
313
|
const functionsToStrings = (config) => {
|
314
314
|
config = { ...config }
|
315
|
-
|
316
|
-
if (
|
317
|
-
return { ...
|
315
|
+
defToStrings = (def) => {
|
316
|
+
if (def.apply) {
|
317
|
+
return { ...def, match: def.match.toString(), apply: def.apply.toString() }
|
318
318
|
} else {
|
319
|
-
return [
|
319
|
+
return [def[0].toString(), def[1].toString()]
|
320
320
|
}
|
321
321
|
}
|
322
322
|
if (config.generators) {
|
323
|
-
config.generators = config.generators.map(
|
323
|
+
config.generators = config.generators.map(defToStrings)
|
324
324
|
}
|
325
325
|
if (config.semantics) {
|
326
|
-
config.semantics = config.semantics.map(
|
327
|
-
if (semantic.apply) {
|
328
|
-
return { ...semantic, match: semantic.match.toString(), apply: semantic.apply.toString() }
|
329
|
-
} else {
|
330
|
-
return [semantic[0].toString(), semantic[1].toString()]
|
331
|
-
}
|
332
|
-
})
|
326
|
+
config.semantics = config.semantics.map(defToStrings)
|
333
327
|
}
|
334
328
|
if (config.bridges) {
|
335
329
|
config.bridges = config.bridges.map((bridge) => {
|
@@ -338,7 +332,7 @@ const functionsToStrings = (config) => {
|
|
338
332
|
bridge.generator = bridge.generator.toString()
|
339
333
|
}
|
340
334
|
if (bridge.generators) {
|
341
|
-
bridge.generators = bridge.generators.map(
|
335
|
+
bridge.generators = bridge.generators.map(defToStrings)
|
342
336
|
}
|
343
337
|
if (bridge.generatorp) {
|
344
338
|
bridge.generatorp = bridge.generatorp.toString()
|
@@ -349,9 +343,15 @@ const functionsToStrings = (config) => {
|
|
349
343
|
if (bridge.semantic) {
|
350
344
|
bridge.semantic = bridge.semantic.toString()
|
351
345
|
}
|
346
|
+
if (bridge.semantics) {
|
347
|
+
bridge.semantics = bridge.semantics.toString()
|
348
|
+
}
|
352
349
|
if (bridge.evaluator) {
|
353
350
|
bridge.evaluator = bridge.evaluator.toString()
|
354
351
|
}
|
352
|
+
if (bridge.evaluators) {
|
353
|
+
bridge.evaluators = bridge.evaluators.toString()
|
354
|
+
}
|
355
355
|
return bridge
|
356
356
|
})
|
357
357
|
}
|