tpmkms
Version:
Reusable libraries for Entodicton, a natural language to json converter
66 lines (61 loc) • 1.58 kB
JavaScript
const { knowledgeModule, ensureTestFile, where, unflatten, flattens } = require('./runtime').theprogrammablemind
const { defaultContextCheck } = require('./helpers')
const tests = require('./evaluate.test.json')
const pos = require('./pos')
const gdefaults = require('./gdefaults')
const config = {
name: 'evaluate',
operators: [
"([evaluate] (value))",
{ pattern: "([value1])", scope: "testing" },
],
bridges: [
{
where: where(),
id: 'value1',
evaluator: ({context}) => {
context.evalue = 'value1 after evaluation'
},
scope: "testing",
},
{
where: where(),
id: 'evaluate',
after: ['verb'],
bridge: "{ ...next(operator), postModifiers: ['value'], value: after[0] }",
semantic: async ({context, e, resolveResponse}) => {
resolveResponse(context, (await e(context.value)).evalue)
}
}
],
};
function initializer({objects, config, isModule}) {
config.addArgs(({config, api, isA}) => ({
resolveResponse: (context, value) => {
context.response = value || { marker: 'answerNotKnown' }
if (context.response) {
context.isResponse = true
}
},
resolveEvaluate: (context, value) => {
context.evalue = value
},
}))
}
knowledgeModule({
config,
initializer,
includes: [pos, gdefaults],
module,
description: 'Explicit handling of evaluate',
test: {
name: './evaluate.test.json',
contents: tests,
include: {
words: true,
},
checks: {
context: [defaultContextCheck()],
},
},
})