From 29b365b7143cd5eeb588285e6fe46a851775dce2 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Wed, 31 Jul 2024 05:36:34 +0530 Subject: [PATCH] feat(core): extract params from workflow --- mx-interpreter/preprocessor.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mx-interpreter/preprocessor.ts b/mx-interpreter/preprocessor.ts index 95fae90c..7905c41a 100644 --- a/mx-interpreter/preprocessor.ts +++ b/mx-interpreter/preprocessor.ts @@ -46,5 +46,28 @@ export default class Preprocessor { return error; } + /** +* Extracts parameter names from the workflow. +* @param {WorkflowFile} workflow The given workflow +* @returns {String[]} List of parameters' names. +*/ + static getParams(workflow: WorkflowFile) : string[] { + const getParamsRecurse = (object : any) : string[] => { + if (typeof object === 'object') { + // Recursion base case + if (object.$param) { + return [object.$param]; + } + + // Recursion general case + return Object.values(object) + .reduce((p: string[], v : any) : string[] => [...p, ...getParamsRecurse(v)], []); + } + return []; + }; + + return getParamsRecurse(workflow.workflow); + } + } \ No newline at end of file