import * as Models from '../visualUI/ivprog_elements'; import { LocalizedStrings } from "./../services/localizedStringsService"; function parseBoolean (var_value, dimensions) { if (dimensions == 0) return var_value == LocalizedStrings.getUI("logic_value_true"); if (dimensions == 1) { var final_array = []; var_value.forEach(function(el){ final_array.push(el == LocalizedStrings.getUI("logic_value_true")); }); return final_array; } if (dimensions == 2) { var final_array = []; var_value.forEach(function(row){ var temp = []; row.forEach(function(el){ temp.push(el == LocalizedStrings.getUI("logic_value_true")); }); final_array.push(temp); }); return final_array; } } function parseGlobal (global_obj) { var new_global = new Models.Variable( global_obj.type, global_obj.name, global_obj.value); new_global.is_constant = global_obj.is_const; new_global.columns = global_obj.columns; new_global.dimensions = global_obj.dimension; new_global.rows = global_obj.rows; if (global_obj.type == "boolean") new_global.value = parseBoolean(global_obj.value, global_obj.dimension); window.program_obj.addGlobal(new_global); } function parseParameter (parameter_obj) { const new_parameter = new Models.Variable( parameter_obj.type, parameter_obj.name, null, parameter_obj.dimension, parameter_obj.is_const, parameter_obj.rows, parameter_obj.columns, parameter_obj.reference ); new_parameter.value = parameter_obj.value; if (parameter_obj.type == "boolean" && parameter_obj.value) new_parameter.value = parseBoolean(parameter_obj.value, parameter_obj.dimension); return new_parameter; } function parseFunction (function_obj) { const new_function = new Models.Function( function_obj.name, function_obj.return_type, function_obj.return_dimensions, [], false, false, []); if (!new_function.name) { new_function.name = LocalizedStrings.getUI("start"); new_function.is_main = true; } if (function_obj.parameters_list) { function_obj.parameters_list.forEach(function(el){ new_function.parameters_list.push(parseParameter(el)); }); } if (function_obj.variables_list) { function_obj.variables_list.forEach(function(el){ new_function.variables_list.push(parseParameter(el)); }); } new_function.commands = parseCommands(function_obj.commands) window.program_obj.addFunction(new_function); } export function parserCodeVisual (code_obj = null) { console.log('chegou!', code_obj) window.conteudo = code_obj // Globals: window.program_obj.globals = []; code_obj.globals.forEach(parseGlobal); // Functions: window.program_obj.functions = []; code_obj.functions.forEach(parseFunction); } function parseCommands (commands_block) { console.log('bloco', commands_block) if (Array.isArray(commands_block)) { var temp = []; commands_block.forEach(function(command) { temp.push(parseCommands(command)); }); return temp; } else { return null; } }