import { Types } from './types';
import * as Models from './ivprog_elements';
import { LocalizedStrings } from './../services/localizedStringsService';
import * as Utils from './utils';
export function generate () {
$('.ivprog_visual_panel').find('.error_icon').remove();
var code = LocalizedStrings.getUI('program') + ' { ';
code += globalsCode();
code += '\n';
var has_error = false;
for (var i = 0; i < window.program_obj.functions.length; i ++) {
var n_code = functionsCode(window.program_obj.functions[i]);
if (n_code == null) {
has_error = true;
}
code += n_code;
code += '\n';
}
code += '\n}';
if (has_error) {
return null;
} else {
return code;
}
}
function functionsCode (function_obj) {
var ret = '\n\t' + LocalizedStrings.getUI('function') + ' ';
var has_error = false;
switch (function_obj.return_type) {
case Types.INTEGER:
ret += LocalizedStrings.getUI('type_integer');
break;
case Types.REAL:
ret += LocalizedStrings.getUI('type_real');
break;
case Types.TEXT:
ret += LocalizedStrings.getUI('type_text');
break;
case Types.BOOLEAN:
ret += LocalizedStrings.getUI('type_boolean');
break;
case Types.VOID:
ret += LocalizedStrings.getUI('type_void');
break;
}
ret += ' ';
if (function_obj.return_dimensions == 1) {
ret += '[] '
} else if (function_obj.return_dimensions == 2) {
ret += '[][] '
}
ret += function_obj.name + ' ( ';
for (var j = 0; j < function_obj.parameters_list.length; j++) {
ret += parametersCode(function_obj.parameters_list[j]);
if ((j + 1) < function_obj.parameters_list.length) {
ret += ', ';
}
}
ret += ' ) {';
for (var j = 0; j < function_obj.variables_list.length; j++) {
ret += variablesCode(function_obj.variables_list[j]);
}
for (var j = 0; j < function_obj.commands.length; j++) {
//try {
ret += commandsCode(function_obj.commands[j]);
/*} catch (err) {
has_error = true;
console.error(err.message);
var todos = $('body').find('.command_container');
for (var i = 0; i < todos.length; i++) {
if ($(todos[i]).data('command') == function_obj.commands[j]) {
$( todos[i] ).prepend( ' <i class="ui icon red exclamation triangle error_icon"></i> ' );
break;
}
}
}*/
}
ret += '\n\t}';
if (has_error) {
return null;
} else {
return ret;
}
}
function commandsCode (command_obj, indentation = 2) {
switch (command_obj.type) {
case Models.COMMAND_TYPES.break:
return breaksCode(command_obj, indentation);
case Models.COMMAND_TYPES.comment:
return commentsCode(command_obj, indentation);
case Models.COMMAND_TYPES.reader:
return readersCode(command_obj, indentation);
case Models.COMMAND_TYPES.writer:
return writersCode(command_obj, indentation);
case Models.COMMAND_TYPES.functioncall:
return functioncallsCode(command_obj, indentation);
case Models.COMMAND_TYPES.attribution:
return attributionsCode(command_obj, indentation);
case Models.COMMAND_TYPES.whiletrue:
return whiletruesCode(command_obj, indentation);
case Models.COMMAND_TYPES.dowhiletrue:
return doWhilesCode(command_obj, indentation);
case Models.COMMAND_TYPES.iftrue:
return iftruesCode(command_obj, indentation);
case Models.COMMAND_TYPES.repeatNtimes:
return repeatNtimesCode(command_obj, indentation);
case Models.COMMAND_TYPES.switch:
return switchsCode(command_obj, indentation);
case Models.COMMAND_TYPES.return:
return returnsCode(command_obj, indentation);
}
}
function returnsCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_return');
if (command_obj.variable_value_menu) {
try {
ret += ' ' + elementExpressionCode(command_obj.variable_value_menu);
//ret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);
} catch(err) {}
}
return ret;
}
function breaksCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_break');
return ret;
}
function switchsCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_code_switch') + ' ( ';
ret += variableValueMenuCode(command_obj.variable);
ret += ' ) { ';
if (command_obj.cases) {
for (var i = 0; i < command_obj.cases.length; i++) {
ret += switchcasesCode(command_obj.cases[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '} ';
return ret;
}
function switchcasesCode (switchcase, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_code_case') + ' ';
ret += variableValueMenuCode(switchcase.variable_value_menu);
ret += ' :';
if (switchcase.commands_block) {
for (var i = 0; i < switchcase.commands_block.length; i++) {
ret += commandsCode(switchcase.commands_block[i], (indentation + 1));
}
}
return ret;
}
function repeatNtimesCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_for') + ' ( ';
if (command_obj.var_attribution) {
ret += variableValueMenuCode(command_obj.var_attribution);
ret += ' <- ';
ret += variableValueMenuCode(command_obj.expression1);
}
ret += ' ; ';
if (command_obj.expression2) {
/*switch (command_obj.expression2.expression.type) {
case Models.EXPRESSION_TYPES.exp_logic:
ret += logicExpressionCode(command_obj.expression2.expression);
break;
case Models.EXPRESSION_TYPES.exp_arithmetic:
ret += arithmeticExpressionCode(command_obj.expression2.expression);
break;
}*/
ret += elementExpressionCode(command_obj.expression2);
}
ret += ' ; ';
if (command_obj.var_incrementation) {
ret += variableValueMenuCode(command_obj.var_incrementation);
ret += ' <- ';
ret += variableValueMenuCode(command_obj.expression3.itens[0]);
switch (command_obj.expression3.itens[1]) {
case Models.ARITHMETIC_TYPES.plus:
ret += ' + ';
break;
case Models.ARITHMETIC_TYPES.minus:
ret += ' - ';
break;
case Models.ARITHMETIC_TYPES.multiplication:
ret += ' * ';
break;
case Models.ARITHMETIC_TYPES.division:
ret += ' / ';
break;
case Models.ARITHMETIC_TYPES.module:
ret += ' % ';
break;
}
ret += variableValueMenuCode(command_obj.expression3.itens[2]);
}
ret += ' ) { ';
if (command_obj.commands_block) {
for (var i = 0; i < command_obj.commands_block.length; i++) {
ret += commandsCode(command_obj.commands_block[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '}';
return ret;
}
function iftruesCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_if');
if (!command_obj.expression) {
Utils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));
} else {
ret += ' ( ';
ret += elementExpressionCode(command_obj.expression);
ret += ' ) ';
}
/*switch (command_obj.expression.expression.type) {
case Models.EXPRESSION_TYPES.exp_logic:
ret += logicExpressionCode(command_obj.expression.expression);
break;
case Models.EXPRESSION_TYPES.exp_arithmetic:
ret += arithmeticExpressionCode(command_obj.expression.expression);
break;
}*/
ret += ' { ';
if (command_obj.commands_block) {
for (var i = 0; i < command_obj.commands_block.length; i++) {
ret += commandsCode(command_obj.commands_block[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '} ' + LocalizedStrings.getUI('text_else') + ' {';
if (command_obj.commands_else) {
for (var i = 0; i < command_obj.commands_else.length; i++) {
ret += commandsCode(command_obj.commands_else[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '}';
return ret;
}
function doWhilesCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_code_do') + ' { ';
if (command_obj.commands_block) {
for (var i = 0; i < command_obj.commands_block.length; i++) {
ret += commandsCode(command_obj.commands_block[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '} ' + LocalizedStrings.getUI('text_code_while');
if (!command_obj.expression) {
Utils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));
}
/*switch (command_obj.expression.expression.type) {
case Models.EXPRESSION_TYPES.exp_logic:
ret += logicExpressionCode(command_obj.expression.expression);
break;
case Models.EXPRESSION_TYPES.exp_arithmetic:
ret += arithmeticExpressionCode(command_obj.expression.expression);
break;
}*/
if (command_obj.expression) {
ret += ' ( ';
ret += elementExpressionCode(command_obj.expression);
ret += ' ) ';
}
return ret;
}
function whiletruesCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_code_while');
if (!command_obj.expression) {
Utils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));
}
/*switch (command_obj.expression.expression.type) {
case Models.EXPRESSION_TYPES.exp_logic:
ret += logicExpressionCode(command_obj.expression.expression);
break;
case Models.EXPRESSION_TYPES.exp_arithmetic:
ret += arithmeticExpressionCode(command_obj.expression.expression);
break;
}*/
if (command_obj.expression) {
ret += ' ( ';
ret += elementExpressionCode(command_obj.expression);
ret += ' ) ';
}
ret += ' { ';
if (command_obj.commands_block) {
for (var i = 0; i < command_obj.commands_block.length; i++) {
ret += commandsCode(command_obj.commands_block[i], (indentation + 1));
}
}
ret += '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '}';
return ret;
}
function logicExpressionCode (expression) {
var ret = ' ( ';
if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
ret += logicExpressionCode(expression.first_operand);
} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
ret += arithmeticExpressionCode(expression.first_operand);
} else {
ret += variableValueMenuCode(expression.first_operand);
}
if (expression.operator) {
switch (expression.operator) {
case Models.LOGIC_COMPARISON.equals_to:
ret += ' == ';
break;
case Models.LOGIC_COMPARISON.not_equals_to:
ret += ' != ';
break;
case Models.LOGIC_COMPARISON.and:
ret += ' && ';
break;
case Models.LOGIC_COMPARISON.or:
ret += ' || ';
break;
}
if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
ret += logicExpressionCode(expression.second_operand);
} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
ret += arithmeticExpressionCode(expression.second_operand);
} else {
ret += variableValueMenuCode(expression.second_operand);
}
}
ret += ' ) ';
return ret;
}
function arithmeticExpressionCode (expression) {
var ret = ' ( ';
if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
ret += logicExpressionCode(expression.first_operand);
} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
ret += arithmeticExpressionCode(expression.first_operand);
} else {
ret += variableValueMenuCode(expression.first_operand);
}
switch (expression.operator) {
case Models.ARITHMETIC_COMPARISON.greater_than:
ret += ' > ';
break;
case Models.ARITHMETIC_COMPARISON.less_than:
ret += ' < ';
break;
case Models.ARITHMETIC_COMPARISON.equals_to:
ret += ' == ';
break;
case Models.ARITHMETIC_COMPARISON.not_equals_to:
ret += ' != ';
break;
case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:
ret += ' >= ';
break;
case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:
ret += ' <= ';
break;
}
if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
ret += logicExpressionCode(expression.second_operand);
} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
ret += arithmeticExpressionCode(expression.second_operand);
} else {
ret += variableValueMenuCode(expression.second_operand);
}
ret += ' ) ';
return ret;
}
function attributionsCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += variableValueMenuCode(command_obj.variable) + ' <- ';
/*for (var i = 0; i < command_obj.expression.length; i++) {
ret += elementExpressionCode(command_obj.expression[i]);
}*/
ret += elementExpressionCode(command_obj.expression);
return ret;
}
function elementExpressionCode (expression_obj) {
var ret = '';
for (var i = 0; i < expression_obj.length; i++) {
if (expression_obj[i].type) {
ret += variableValueMenuCode(expression_obj[i]);
} else if (expression_obj[i].type_op) {
switch(expression_obj[i].item) {
case Models.ARITHMETIC_TYPES.plus:
ret += ' + ';
break;
case Models.ARITHMETIC_TYPES.minus:
ret += ' - ';
break;
case Models.ARITHMETIC_TYPES.multiplication:
ret += ' * ';
break;
case Models.ARITHMETIC_TYPES.division:
ret += ' / ';
break;
case Models.ARITHMETIC_TYPES.module:
ret += ' % ';
break;
case Models.LOGIC_COMPARISON.equals_to:
ret += ' == ';
break;
case Models.LOGIC_COMPARISON.not_equals_to:
ret += ' != ';
break;
case Models.LOGIC_COMPARISON.and:
ret += ' ' + LocalizedStrings.getUI('logic_operator_and') + ' ';
break;
case Models.LOGIC_COMPARISON.or:
ret += ' ' + LocalizedStrings.getUI('logic_operator_or') + ' ';
break;
case Models.LOGIC_COMPARISON.not:
ret += ' ' + LocalizedStrings.getUI('logic_operator_not') + ' ';
break;
case Models.ARITHMETIC_COMPARISON.greater_than:
ret += ' > ';
break;
case Models.ARITHMETIC_COMPARISON.less_than:
ret += ' < ';
break;
case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:
ret += ' >= ';
break;
case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:
ret += ' <= ';
break;
}
} else {
ret += ' ' + expression_obj[i] + ' ';
}
}
return ret;
}
function functioncallsCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += variableValueMenuCode(command_obj.function_called);
return ret;
}
function readersCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_command_read') + ' ( ';
ret += variableValueMenuCode(command_obj.variable_value_menu);
ret += ' ) ';
return ret;
}
function variableValueMenuCode (variable_obj, is_return = false) {
var ret = '';
try {
if (variable_obj.function_called) {
if (variable_obj.function_called.name) {
ret += variable_obj.function_called.name + ' ( ';
} else {
ret += LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier,variable_obj.function_called.category) + ' ( ';
}
if (variable_obj.parameters_list) {
for (var i = 0; i < variable_obj.parameters_list.length; i++) {
ret += variableValueMenuCode(variable_obj.parameters_list[i]);
if ((i + 1) < variable_obj.parameters_list.length) {
ret += ', ';
}
}
}
ret += ' )';
} else if (variable_obj.content.type) {
ret += variable_obj.content.name;
if (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {
ret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';
}
if (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {
ret += ' [ ' + variableValueMenuCode(variable_obj.row) + ' ] ';
ret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';
}
} else {
if (isNaN(variable_obj.content)) {
ret += '"' + variable_obj.content + '"';
} else {
ret += variable_obj.content;
}
}
} catch (err) {
if (!is_return) {
Utils.renderErrorMessage(variable_obj.dom_object, LocalizedStrings.getUI('inform_valid_content'));
throw err;
}
}
return ret;
}
function writersCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += LocalizedStrings.getUI('text_command_write') + ' ( ';
/*for (var i = 0; i < command_obj.content.length; i++) {
ret += variableValueMenuCode(command_obj.content[i]);
if ((i + 1) < command_obj.content.length) {
ret += ' + ';
}
}*/
ret += elementExpressionCode(command_obj.content);
ret += ' ) ';
return ret;
}
function commentsCode (command_obj, indentation) {
var ret = '\n';
for (var i = 0; i < indentation; i++) {
ret += '\t';
}
ret += '// ';
ret += command_obj.comment_text.content;
return ret;
}
function parametersCode (parameter_obj) {
var ret = '';
switch (parameter_obj.type) {
case Types.INTEGER:
ret += ' '+LocalizedStrings.getUI('type_integer')+' ';
break;
case Types.REAL:
ret += ' '+LocalizedStrings.getUI('type_real')+' ';
break;
case Types.TEXT:
ret += ' '+LocalizedStrings.getUI('type_text')+' ';
break;
case Types.BOOLEAN:
ret += ' '+LocalizedStrings.getUI('type_boolean')+' ';
break;
}
ret += parameter_obj.name + '';
if (parameter_obj.dimensions == 1) {
ret += ' []'
} else if (parameter_obj.dimensions == 2) {
ret += ' [][]'
}
return ret;
}
function variablesCode (variable_obj) {
var ret = '';
var temp = variable_obj;
ret += '\n\t\t';
if (temp.is_constant) {
ret += 'const ';
}
switch (temp.type) {
case Types.INTEGER:
ret += LocalizedStrings.getUI('type_integer')+' ';
break;
case Types.REAL:
ret += LocalizedStrings.getUI('type_real')+' ';
break;
case Types.TEXT:
ret += LocalizedStrings.getUI('type_text')+' ';
break;
case Types.BOOLEAN:
ret += LocalizedStrings.getUI('type_boolean')+' ';
break;
}
ret += temp.name + ' ';
if (temp.dimensions == 1) {
ret += '[' + temp.columns + '] ';
switch (temp.type) {
case Types.INTEGER:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += temp.value[j];
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.REAL:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += temp.value[j].toFixed(2);
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.TEXT:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += '"'+temp.value[j]+'"';
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.BOOLEAN:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
if (temp.value[j]) {
ret += LocalizedStrings.getUI('logic_value_true');
} else {
ret += LocalizedStrings.getUI('logic_value_false');
}
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
}
} else if (temp.dimensions == 2) {
ret += '[' + temp.rows + '][' + temp.columns + '] ';
switch (temp.type) {
case Types.INTEGER:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += temp.value[j][k];
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.REAL:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += temp.value[j][k].toFixed(2);
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.TEXT:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += '"' + temp.value[j][k] + '"';
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.BOOLEAN:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
if (temp.value[j][k]) {
ret += LocalizedStrings.getUI('logic_value_true');
} else {
ret += LocalizedStrings.getUI('logic_value_false');
}
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
}
} else {
switch (temp.type) {
case Types.INTEGER:
ret += '<- ' + temp.value;
break;
case Types.REAL:
ret += '<- ' + temp.value.toFixed(2);
break;
case Types.TEXT:
ret += '<- "' + temp.value + '"';
break;
case Types.BOOLEAN:
ret += '<- ';
if (temp.value) {
ret += LocalizedStrings.getUI('logic_value_true');
} else {
ret += LocalizedStrings.getUI('logic_value_false');
}
break;
}
}
return ret;
}
function globalsCode () {
var ret = '';
if (window.program_obj.globals) {
for (var i = 0; i < window.program_obj.globals.length; i++) {
var temp = window.program_obj.globals[i];
ret += '\n\t';
if (temp.is_constant) {
ret += 'const ';
}
switch (temp.type) {
case Types.INTEGER:
ret += LocalizedStrings.getUI('type_integer');
break;
case Types.REAL:
ret += LocalizedStrings.getUI('type_real');
break;
case Types.TEXT:
ret += LocalizedStrings.getUI('type_text');
break;
case Types.BOOLEAN:
ret += LocalizedStrings.getUI('type_boolean');
break;
}
ret += ' ' + temp.name + ' ';
if (temp.dimensions == 1) {
ret += '[' + temp.columns + '] ';
switch (temp.type) {
case Types.INTEGER:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += temp.value[j];
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.REAL:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += temp.value[j].toFixed(2);
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.TEXT:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
ret += '"'+temp.value[j]+'"';
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
case Types.BOOLEAN:
ret += '<- {';
for (var j = 0; j < temp.value.length; j++) {
if (temp.value[j]) {
ret += LocalizedStrings.getUI('logic_value_true');
} else {
ret += LocalizedStrings.getUI('logic_value_false');
}
if ((j + 1) < temp.value.length) {
ret += ', ';
}
}
ret += '}';
break;
}
} else if (temp.dimensions == 2) {
ret += '[' + temp.rows + '][' + temp.columns + '] ';
switch (temp.type) {
case Types.INTEGER:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += temp.value[j][k];
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.REAL:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += temp.value[j][k].toFixed(2);
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.TEXT:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
ret += '"' + temp.value[j][k] + '"';
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
case Types.BOOLEAN:
ret += '<- {';
for (var j = 0; j < temp.rows; j++) {
ret += '{';
for (var k = 0; k < temp.columns; k++) {
if (temp.value[j][k]) {
ret += LocalizedStrings.getUI('logic_value_true');
} else {
ret += LocalizedStrings.getUI('logic_value_false');
}
if ((k + 1) < temp.columns) {
ret += ', ';
}
}
ret += '}';
if ((j + 1) < temp.rows) {
ret += ', ';
}
}
ret += '}';
break;
}
} else {
switch (temp.type) {
case Types.INTEGER:
ret += '<- ' + temp.value;
break;
case Types.REAL:
ret += '<- ' + temp.value.toFixed(2);
break;
case Types.TEXT:
ret += '<- "' + temp.value + '"';
break;
case Types.BOOLEAN:
ret += '<- ';
if (temp.value) {
ret += LocalizedStrings.getUI('logic_value_true');;
} else {
ret += LocalizedStrings.getUI('logic_value_false');;
}
break;
}
}
}
}
return ret;
}