theprogrammablemind_4wp 8.3.0-beta.4 → 8.3.0-beta.6

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -65,6 +65,6 @@
65
65
  "sort-json": "^2.0.0",
66
66
  "uuid": "^8.3.2"
67
67
  },
68
- "version": "8.3.0-beta.4",
68
+ "version": "8.3.0-beta.6",
69
69
  "license": "UNLICENSED"
70
70
  }
package/src/config.js CHANGED
@@ -387,32 +387,45 @@ const handleBridgeProps = (config, bridge, { addFirst, uuid } = {}) => {
387
387
  config.config.generators.push(addUUID(generator))
388
388
  }
389
389
  }
390
- if (bridge.evaluator) {
391
- const semantic = {
392
- where: bridge.evaluator.where || bridge.where || helpers.where(3),
393
- match: ({ context }) => bridge.id == context.marker && context.evaluate,
394
- apply: (args) => bridge.evaluator(args),
395
- applyWrapped: bridge.evaluator,
396
- property: 'evaluator'
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(semantic))
406
+ config.config.semantics.unshift(addUUID(semanticDef))
400
407
  } else {
401
- config.config.semantics.push(addUUID(semantic))
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
- const semantic = {
406
- where: bridge.semantic.where || bridge.where || helpers.where(3),
407
- match: ({ context }) => bridge.id == context.marker && !context.evaluate,
408
- apply: (args) => bridge.semantic(args),
409
- applyWrapped: bridge.semantic,
410
- property: 'semantic'
417
+ addSemantic(bridge.semantic, false)
418
+ }
419
+
420
+ if (bridge.evaluators) {
421
+ for (const evaluator of bridge.evaluators) {
422
+ addSemantic(evaluator, true)
411
423
  }
412
- if (addFirst) {
413
- config.config.semantics.unshift(addUUID(semantic))
414
- } else {
415
- config.config.semantics.push(addUUID(semantic))
424
+ }
425
+
426
+ if (bridge.semantics) {
427
+ for (const semantic of bridge.semantics) {
428
+ addSemantic(semantic, false)
416
429
  }
417
430
  }
418
431
  }
@@ -423,8 +436,8 @@ const handleCalculatedProps = (baseConfig, moreConfig, { addFirst, uuid } = {})
423
436
  if (moreConfig.bridges) {
424
437
  moreConfig.bridges = moreConfig.bridges.map((bridge) => {
425
438
  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']
439
+ const valid = ['after', 'before', 'bridge', 'development', 'evaluator', 'evaluators', 'generatorp', 'generatorr', 'generatorpr', 'generators', 'operator', 'id', 'convolution', 'inverted', 'isA', 'children', 'parents',
440
+ 'level', 'optional', 'selector', 'semantic', 'semantics', 'words', /Bridge$/, 'localHierarchy', 'levelSpecificHierarchy', 'where', 'uuid']
428
441
  helpers.validProps(valid, bridge, 'bridge')
429
442
  handleBridgeProps(baseConfig, bridge, { addFirst, uuid })
430
443
  return bridge
@@ -1149,44 +1162,53 @@ class Config {
1149
1162
  delete bridge.generatorr
1150
1163
  delete bridge.generatorpr
1151
1164
  delete bridge.evaluator
1165
+ delete bridge.evaluators
1152
1166
  delete bridge.semantic
1167
+ delete bridge.semantics
1153
1168
  if (!bridge.bridge) {
1154
1169
  bridge.bridge = "{ ...next(operator) }"
1155
1170
  }
1156
1171
  return bridge
1157
1172
  })
1158
1173
  } else {
1159
- config.generators = (config.generators || []).map((generator) => {
1160
- generator = { ...generator }
1161
- delete generator.where
1162
- generator.match = generator.match.toString()
1163
- generator.apply = generator.apply.toString()
1164
- return generator
1165
- })
1166
- config.semantics = (config.semantics || []).map((semantic) => {
1167
- semantic = { ...semantic }
1168
- delete semantic.where
1169
- semantic.match = semantic.match.toString()
1170
- semantic.apply = semantic.apply.toString()
1171
- return semantic
1172
- })
1174
+ const toCanonical = (def) => {
1175
+ if (typeof def == 'function') {
1176
+ return def.toString()
1177
+ } else if (typeof def == 'string') {
1178
+ return def
1179
+ }
1180
+ def = { ...def }
1181
+ delete def.where
1182
+ def.match = def.match ? def.match.toString() : ""
1183
+ def.apply = def.apply ? def.apply.toString() : ""
1184
+ return def
1185
+ }
1186
+
1187
+ config.generators = (config.generators || []).map(toCanonical)
1188
+ config.semantics = (config.semantics || []).map(toCanonical)
1173
1189
  config.bridges = (config.bridges || []).map((bridge) => {
1174
1190
  bridge = { ...bridge }
1175
1191
  delete bridge.where
1176
1192
  if (bridge.generatorp) {
1177
- bridge.generatorp = bridge.generatorp.toString()
1193
+ bridge.generatorp = toCanonical(bridge.generatorp)
1178
1194
  }
1179
1195
  if (bridge.generatorr) {
1180
- bridge.generatorr = bridge.generatorr.toString()
1196
+ bridge.generatorr = toCanonical(bridge.generatorr)
1181
1197
  }
1182
1198
  if (bridge.generatorpr) {
1183
- bridge.generatorpr = bridge.generatorpr.toString()
1199
+ bridge.generatorpr = toCanonical(bridge.generatorpr)
1184
1200
  }
1185
1201
  if (bridge.evaluator) {
1186
- bridge.evaluator = bridge.evaluator.toString()
1202
+ bridge.evaluator = toCanonical(bridge.evaluator)
1187
1203
  }
1188
1204
  if (bridge.semantic) {
1189
- bridge.semantic = bridge.semantic.toString()
1205
+ bridge.semantic = toCanonical(bridge.semantic)
1206
+ }
1207
+ if (bridge.evaluators) {
1208
+ bridge.evaluators = bridge.evaluators.map(toCanonical).toString()
1209
+ }
1210
+ if (bridge.semantics) {
1211
+ bridge.semantics = bridge.semantics.map(toCanonical).toString()
1190
1212
  }
1191
1213
  return bridge
1192
1214
  })
@@ -321,7 +321,6 @@ const processContextsB = async ({ config, hierarchy, semantics, generators, json
321
321
  const mostCalled = semantics.getMostCalled()
322
322
  e.message += `\nThe most called semantic was:\nnotes: ${mostCalled.notes}\nmatch: ${mostCalled.matcher.toString()}\napply: ${mostCalled._apply.toString()}\n`
323
323
  }
324
- // contextPrime = semantics.apply(args, { marker: 'error', context, error: e })
325
324
  if (isInstance) {
326
325
  console.log('error', e.error)
327
326
  }