diff --git a/client/src_analyzer/Worker_Analyze.re b/client/src_analyzer/Worker_Analyze.re index fc0cd57b..401f3709 100644 --- a/client/src_analyzer/Worker_Analyze.re +++ b/client/src_analyzer/Worker_Analyze.re @@ -225,10 +225,16 @@ module Make = (ESig: Worker_Evaluator.EvaluatorSig) => { }; let executeMany: - (. Belt.Map.String.t(string)) => Belt.Map.String.t(list(blockData)) = - (. codeMap) => { + (. list((string, string))) => list((string, list(blockData))) = + (. codeBlocks) => { /* Reset before evaluating several blocks */ Evaluator.reset(); - codeMap->(Belt.Map.String.map(code => execute(. false, code))); + codeBlocks + ->( + Belt.List.mapU((. (id, code)) => { + Js.log(code); + (id, execute(. false, code)); + }) + ); }; }; diff --git a/client/src_editor/Editor_Blocks.re b/client/src_editor/Editor_Blocks.re index f18e1b3a..9281e1c7 100644 --- a/client/src_editor/Editor_Blocks.re +++ b/client/src_editor/Editor_Blocks.re @@ -111,18 +111,17 @@ let make = ), }) | Block_Execute => - module MS = Belt.Map.String; - let allCodeBlocks = state.blocks ->( - Belt.Array.reduceU(MS.empty, (. map, {b_id, b_data}) => + Belt.Array.reduceU([], (. acc, {b_id, b_data}) => switch (b_data) { - | B_Text(_) => map - | B_Code({bc_value}) => map->(MS.set(b_id, bc_value)) + | B_Text(_) => acc + | B_Code({bc_value}) => [(b_id, bc_value), ...acc] } ) - ); + ) + ->Belt.List.reverse; /* Clear all widgets and execute all blocks */ ReasonReact.SideEffects( @@ -133,7 +132,7 @@ let make = |> then_(results => { results ->( - MS.forEachU((. blockId, result) => { + Belt.List.forEachU((. (blockId, result)) => { let widgets = Editor_Blocks_Utils.executeResultToWidget(result); self.send(Block_AddWidgets(blockId, widgets)); diff --git a/client/src_editor/Editor_Worker.re b/client/src_editor/Editor_Worker.re index c5e4b9ed..2fec6520 100644 --- a/client/src_editor/Editor_Worker.re +++ b/client/src_editor/Editor_Worker.re @@ -16,8 +16,8 @@ type js_executeResult = { type rtop = { execute: (. bool, string) => Js.Promise.t(list(Worker_Types.blockData)), executeMany: - (. Belt.Map.String.t(string)) => - Js.Promise.t(Belt.Map.String.t(list(Worker_Types.blockData))), + (. list((string, string))) => + Js.Promise.t(list((string, list(Worker_Types.blockData)))), }; let worker = RtopWorker.make();