diff --git a/kleros-sdk/src/dataMappings/utils/lambdas.ts b/kleros-sdk/src/dataMappings/utils/lambdas.ts new file mode 100644 index 000000000..af6a44b5b --- /dev/null +++ b/kleros-sdk/src/dataMappings/utils/lambdas.ts @@ -0,0 +1,13 @@ +export const lambdas = { + // Converts a value to hex representation + hex: function () { + return function (text: string, render: (value: string) => string) { + const originalValueStr = render(text); + const num = parseInt(originalValueStr, 10); + if (!isNaN(num)) { + return "0x" + num.toString(16).toLowerCase(); + } + return originalValueStr; + }; + }, +}; diff --git a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts index 68ae983ec..dc8ff8186 100644 --- a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts +++ b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts @@ -1,9 +1,10 @@ import mustache from "mustache"; import { DisputeDetails } from "./disputeDetailsTypes"; import DisputeDetailsSchema, { RefuseToArbitrateAnswer } from "./disputeDetailsSchema"; +import { lambdas } from "./lambdas"; export const populateTemplate = (mustacheTemplate: string, data: any): DisputeDetails => { - const render = mustache.render(mustacheTemplate, data); + const render = mustache.render(mustacheTemplate, { ...lambdas, ...data }); const dispute = JSON.parse(render); const validation = DisputeDetailsSchema.safeParse(dispute);