mirror of
https://github.com/damp11113-software/ccIDE.git
synced 2025-04-28 06:58:13 +00:00
110 lines
3.5 KiB
JavaScript
110 lines
3.5 KiB
JavaScript
const { luaGenerator } = require('blockly/lua');
|
|
|
|
// Check if luaGenerator.forBlock is defined and initialize if necessary-
|
|
if (!luaGenerator.forBlock) {
|
|
luaGenerator.forBlock = {};
|
|
}
|
|
|
|
// Define your custom block handler
|
|
luaGenerator.forBlock['sys_sleep'] = function(block, generator) {
|
|
var sleepfor = generator.valueToCode(block, 'SLEEPSEC', generator.ORDER_OVERRIDES);
|
|
|
|
var code = `sleep(${sleepfor})\n`;
|
|
return code;
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_utils_table_variable_pack'] = function(block, generator) {
|
|
var args = generator.valueToCode(block, 'RETURN_ARGS', generator.ORDER_NONE);
|
|
|
|
return [`table.pack(${args})`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_utils_get_value_from_table_with_index'] = function(block, generator) {
|
|
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
|
|
var index = generator.valueToCode(block, 'INDEX', generator.ORDER_NONE);
|
|
|
|
return [`${table}[${index}]`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_utils_get_type'] = function(block, generator) {
|
|
var input = generator.valueToCode(block, 'INPUT', generator.ORDER_NONE);
|
|
|
|
return [`type(${input})`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_table_unpack_to_args'] = function(block, generator) {
|
|
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
|
|
|
|
return [`table.unpack(${table})`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_table_add_key_value'] = function(block, generator) {
|
|
var key = generator.valueToCode(block, 'KEY', generator.ORDER_NONE);
|
|
var value = generator.valueToCode(block, 'VALUE', generator.ORDER_NONE);
|
|
var shorted = block.getFieldValue('SHORT') == 'TRUE';
|
|
if (!shorted) {
|
|
return [`[${key}] = ${value}`, luaGenerator.ORDER_NONE];
|
|
} else {
|
|
return [`${key} = ${value}`, luaGenerator.ORDER_NONE];
|
|
}
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_table_append_data'] = function(block, generator) {
|
|
var data = generator.valueToCode(block, 'DATA', generator.ORDER_NONE);
|
|
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
|
|
|
|
return `table.insert(${table}, ${data})\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_table_append_data'] = function(block, generator) {
|
|
var data = generator.valueToCode(block, 'DATA', generator.ORDER_NONE);
|
|
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
|
|
|
|
return `table.insert(${table}, ${data})\n`;
|
|
};
|
|
|
|
// Define your custom block handler
|
|
luaGenerator.forBlock['ide_addcode'] = function(block, generator) {
|
|
var codefromuser = generator.valueToCode(block, 'CODE', generator.ORDER_ATOMIC);
|
|
|
|
// Remove all occurrences of the matched characters
|
|
const cleanedStr = codefromuser.replace(/[']/g, '');
|
|
return cleanedStr+"\n";
|
|
};
|
|
|
|
luaGenerator.forBlock['ide_start'] = function(block, generator) {
|
|
var docode = generator.statementToCode(block, 'DO');
|
|
|
|
var code =
|
|
`
|
|
function main()
|
|
${docode}
|
|
end
|
|
|
|
main()
|
|
`
|
|
return code;
|
|
};
|
|
|
|
|
|
luaGenerator.forBlock['sys_exit'] = function(block, generator) {
|
|
return `exit()\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_write'] = function(block, generator) {
|
|
var text = generator.valueToCode(block, 'TEXT', generator.ORDER_NONE);
|
|
|
|
return `write(${text})\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_print_error'] = function(block, generator) {
|
|
var error = generator.valueToCode(block, 'ERROR', generator.ORDER_NONE);
|
|
|
|
return `printError(${error})\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['sys_mc_std_color'] = function(block, generator) {
|
|
var color = block.getFieldValue('COLOR');
|
|
|
|
return [`"${color}"`, luaGenerator.ORDER_NONE];
|
|
}; |