tpmkms
Version:
Reusable libraries for Entodicton, a natural language to json converter
59 lines • 3.7 kB
JSON
{
"configs": [
{
"operators": [
"((context.dimension != undefined) [unitPerUnit|per] (context.dimension != undefined))"
],
"bridges": [
{
"id": "unitPerUnit",
"before": [
"amountOfCoordinate"
],
"isA": [
"unit"
],
"bridge": "{ \n ...operator, \n numerator: before[0], \n denominator: after[0],\n interpolate: [{ property: 'numerator', context: { number: 'many' } }, { context: operator }, { property: 'denominator' }] \n }",
"enhanced_associations": true
}
],
"semantics": [
{
"match": "({context}) => context.marker == 'convertToUnits' && context.evaluate && (context.from?.unit?.marker == 'unitPerUnit' || context.to.marker == 'unitPerUnit')",
"apply": "async ({remember, context, kms, e, callId, resolveEvaluate, toEValue, error}) => {\n\n async function convert(fromUnits, fromAmount, toUnits) {\n let evalue;\n if (toUnits.value == fromUnits.value) {\n evalue = fromAmount\n // if (!fromAmount.value) {\n // debugger\n //}\n evalue.evalue = fromAmount.evalue || fromAmount.value\n } else {\n const formula = kms.formulas.api.get(toUnits, [fromUnits])\n if (!formula) {\n const reason = { marker: 'reason', focusableForPhrase: true, evalue: { marker: 'noconversion', from: fromUnits, to: toUnits } }\n kms.stm.api.remember({ context: reason })\n error(reason)\n }\n kms.stm.api.setVariable(fromUnits.value, fromAmount)\n evalue = await e(formula)\n }\n return evalue\n }\n\n if (!context.from.unit) {\n resolveEvaluate(context.from, await e(context.from))\n }\n\n\n const from = toEValue(context.from)\n remember(context.to)\n const evalueNumerator = await convert(from.unit.numerator, from.amount, context.to.numerator)\n const evalueDenominator = await convert(from.unit.denominator, 1, context.to.denominator)\n const evalue = { evalue: (toFinalValue(evalueNumerator) || evalueNumerator.value) / (toFinalValue(evalueDenominator) || evalueDenominator.evalue) }\n context.evalue = {\n paraphrase: true,\n marker: 'quantity',\n level: 1,\n unit: context.to,\n amount: { evalue, paraphrase: undefined }\n }\n }"
}
]
}
],
"resultss": [
{
"extraConfig": true,
"operators": [
"((context.dimension != undefined) [unitPerUnit|per] (context.dimension != undefined))"
],
"bridges": [
{
"id": "unitPerUnit",
"before": [
"amountOfCoordinate"
],
"isA": [
"unit"
],
"bridge": "{ \n ...operator, \n numerator: before[0], \n denominator: after[0],\n interpolate: [{ property: 'numerator', context: { number: 'many' } }, { context: operator }, { property: 'denominator' }] \n }",
"enhanced_associations": true
}
],
"semantics": [
{
"where": "/home/dev/code/theprogrammablemind/kms/common/rates.js:38"
}
]
}
],
"fragments": [],
"semantics": [],
"associations": [],
"summaries": [],
"learned_contextual_priorities": []
}