UNPKG

tpmkms

Version:

Reusable libraries for Entodicton, a natural language to json converter

59 lines 3.7 kB
{ "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": [] }