toProgram method

Result<Map<String, dynamic>, bool> toProgram()

Implementation

Result<Map<String, dynamic>, bool> toProgram() {
  final Map<String, dynamic> program = {};
  final List<Map<String, dynamic>> blocks = [];
  bool asFailure = false;
  for (var componentId in componentList) {
    var component = canvasReader.model.getComponent(componentId);
    BuilderComponentData componentData = component.data;
    Map<String, dynamic> parameters = {};
    for (var parameter in componentData.parameters) {
      parameters[parameter.name] = parameter.value;
    }
    var io = fetchBlockIO(component);
    if (io is Success) {
      var blockData = {
        "block_name": component.type,
        "block_id": component.id,
        "parameters": parameters,
        "outputs": (io as Success).value[1],
        "inputs": (io as Success).value[0],
      };
      blocks.add(blockData);
    } else {
      asFailure = true;
    }
  }
  program["blocks"] = blocks;
  return asFailure ? Failure(true) : Success(program);
}