ekms 8.0.0-beta.40 → 8.0.0-beta.41

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,54 @@
1
+ const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
2
+ const { defaultContextCheck } = require('./helpers')
3
+ const helpers = require('./helpers')
4
+ const gdefaults = require('./gdefaults')
5
+ const listener_tests = require('./listener.test.json')
6
+
7
+ const configStruct = {
8
+ name: 'listener',
9
+ operators: [
10
+ { pattern: "([call])", development: true },
11
+ ],
12
+ bridges: [
13
+ {
14
+ id: 'call',
15
+ semantic: ({context}) => {
16
+ context.wasCalled = true
17
+ },
18
+ },
19
+ ],
20
+ semantics: [
21
+ {
22
+ match: ({context}) => context.marker == 'call',
23
+ apply: ({context, defer}) => {
24
+ defer(({context}) => {
25
+ if (context.wasCalled) {
26
+ context.sawWasCalled = true
27
+ }
28
+ })
29
+ },
30
+ },
31
+ ],
32
+ }
33
+
34
+ let createConfig = async () => {
35
+ const config = new Config(configStruct, module)
36
+ config.stop_auto_rebuild()
37
+ await config.add(gdefaults)
38
+ await config.restart_auto_rebuild()
39
+ return config
40
+ }
41
+
42
+ knowledgeModule( {
43
+ module,
44
+ description: 'test of listeners',
45
+ createConfig,
46
+ test: {
47
+ name: './listener.test.json',
48
+ contents: listener_tests,
49
+ checks: {
50
+ context: defaultContextCheck,
51
+ objects: ['mentioned', { km: 'gdefaults' }],
52
+ },
53
+ },
54
+ })
@@ -0,0 +1,104 @@
1
+ [
2
+ {
3
+ "associations": [
4
+ ],
5
+ "config": {
6
+ },
7
+ "contexts": [
8
+ {
9
+ "dead": true,
10
+ "default": true,
11
+ "level": 1,
12
+ "marker": "call",
13
+ "range": {
14
+ "end": 3,
15
+ "start": 0
16
+ },
17
+ "sawWasCalled": true,
18
+ "text": "call",
19
+ "topLevel": true,
20
+ "touchedBy": [
21
+ "listener#call2"
22
+ ],
23
+ "value": "call",
24
+ "wasCalled": true,
25
+ "word": "call"
26
+ }
27
+ ],
28
+ "developerTest": false,
29
+ "generatedParenthesized": [
30
+ ""
31
+ ],
32
+ "metadata": {
33
+ "opChoices": [
34
+ {
35
+ "counter": 1,
36
+ "op": [
37
+ "call",
38
+ 0
39
+ ],
40
+ "ops": [
41
+ [
42
+ "call",
43
+ 0
44
+ ]
45
+ ]
46
+ }
47
+ ]
48
+ },
49
+ "objects": {
50
+ "nameToUUID": {
51
+ "gdefaults": "gdefaults2",
52
+ "listener": "listener1",
53
+ "tokenize": "tokenize2"
54
+ },
55
+ "namespaced": {
56
+ "gdefaults2": {
57
+ },
58
+ "listener1": {
59
+ },
60
+ "tokenize2": {
61
+ }
62
+ },
63
+ "processed": [
64
+ {
65
+ "context": {
66
+ "dead": true,
67
+ "default": true,
68
+ "level": 1,
69
+ "marker": "call",
70
+ "range": {
71
+ "end": 3,
72
+ "start": 0
73
+ },
74
+ "sawWasCalled": true,
75
+ "text": "call",
76
+ "topLevel": true,
77
+ "touchedBy": [
78
+ "listener#call2"
79
+ ],
80
+ "value": "call",
81
+ "wasCalled": true,
82
+ "word": "call"
83
+ },
84
+ "generatedParenthesized": "",
85
+ "paraphrases": "call",
86
+ "paraphrasesParenthesized": "(call)",
87
+ "responses": [
88
+ ""
89
+ ]
90
+ }
91
+ ]
92
+ },
93
+ "paraphrases": [
94
+ "call"
95
+ ],
96
+ "paraphrasesParenthesized": [
97
+ "(call)"
98
+ ],
99
+ "query": "call",
100
+ "responses": [
101
+ ""
102
+ ]
103
+ }
104
+ ]
@@ -45,6 +45,11 @@ class API {
45
45
  return [...names]
46
46
  }
47
47
 
48
+ getNames(nameable) {
49
+ return (nameable.stm && nameable.stm.names) || []
50
+ }
51
+
52
+ /*
48
53
  getNames() {
49
54
  const current = this.current()
50
55
  console.log('getReportNames current', JSON.stringify(current, null, 2))
@@ -53,6 +58,7 @@ class API {
53
58
  return { name, selected, id: name }
54
59
  })
55
60
  }
61
+ */
56
62
 
57
63
  setCurrent(name) {
58
64
  const context = this.objects.named[name]
package/common/stm.js CHANGED
@@ -65,8 +65,14 @@ class API {
65
65
  this._objects.mentioned.unshift(concept)
66
66
  }
67
67
 
68
- mentions({ context, useHierarchy=true, condition = (() => true) } = {}) {
68
+ mentions({ context, useHierarchy=true, all, condition = (() => true) } = {}) {
69
69
  const findPrevious = !!context.stm_previous
70
+ const forAll = []
71
+ const addForAll = (context) => {
72
+ if (!forAll.find( (c) => c.stm.id == context.stm.id)) {
73
+ forAll.push(context)
74
+ }
75
+ }
70
76
 
71
77
  // care about value first
72
78
  let findCounter = 0
@@ -77,7 +83,11 @@ class API {
77
83
  continue
78
84
  }
79
85
  if (condition()) {
80
- return m
86
+ if (all) {
87
+ allForAll(m)
88
+ } else {
89
+ return m
90
+ }
81
91
  }
82
92
  }
83
93
  }
@@ -95,7 +105,11 @@ class API {
95
105
  continue
96
106
  }
97
107
  if (condition(m)) {
98
- return m
108
+ if (all) {
109
+ addForAll(m)
110
+ } else {
111
+ return m
112
+ }
99
113
  }
100
114
  }
101
115
  // if (context.types && context.types.includes(m.marker)) {
@@ -107,7 +121,11 @@ class API {
107
121
  continue
108
122
  }
109
123
  if (condition(m)) {
110
- return m
124
+ if (all) {
125
+ addForAll(m)
126
+ } else {
127
+ return m
128
+ }
111
129
  }
112
130
  }
113
131
  }
@@ -123,11 +141,19 @@ class API {
123
141
  continue
124
142
  }
125
143
  if (condition(m)) {
126
- return m
144
+ if (all) {
145
+ addForAll(m)
146
+ } else {
147
+ return m
148
+ }
127
149
  }
128
150
  }
129
151
  }
130
152
  }
153
+
154
+ if (all) {
155
+ return forAll
156
+ }
131
157
  }
132
158
 
133
159
  getVariable(name) {
package/main.js CHANGED
@@ -19,6 +19,7 @@ const hierarchy = require('./common/hierarchy')
19
19
  const ordering = require('./common/ordering')
20
20
  const properties = require('./common/properties')
21
21
  const sizeable = require('./common/sizeable')
22
+ const listener = require('./common/listener')
22
23
  const tokenize = require('./common/tokenize')
23
24
  const articles = require('./common/articles')
24
25
  const nameable = require('./common/nameable')
@@ -73,6 +74,7 @@ module.exports = {
73
74
  ordering,
74
75
  properties,
75
76
  sizeable,
77
+ listener,
76
78
  tokenize,
77
79
  articles,
78
80
  nameable,
package/package.json CHANGED
@@ -46,6 +46,7 @@
46
46
  "name": "Hidden",
47
47
  "description": "Don't show in the UI",
48
48
  "includes": [
49
+ "listener",
49
50
  "tokenize"
50
51
  ]
51
52
  },
@@ -198,6 +199,8 @@
198
199
  "common/length.instance.json",
199
200
  "common/length.js",
200
201
  "common/length.test.json",
202
+ "common/listener.js",
203
+ "common/listener.test.json",
201
204
  "common/math.instance.json",
202
205
  "common/math.js",
203
206
  "common/math.test.json",
@@ -291,8 +294,8 @@
291
294
  "table": "^6.7.1",
292
295
  "base-64": "^1.0.0",
293
296
  "argparse": "^2.0.1",
294
- "theprogrammablemind": "8.0.0-beta.40"
297
+ "theprogrammablemind": "8.0.0-beta.41"
295
298
  },
296
- "version": "8.0.0-beta.40",
299
+ "version": "8.0.0-beta.41",
297
300
  "license": "UNLICENSED"
298
301
  }