// this file not for generator only const { luaGenerator } = require('blockly/lua'); // Check if luaGenerator.forBlock is defined and initialize if necessary if (!luaGenerator.forBlock) { luaGenerator.forBlock = {}; } luaGenerator.forBlock['textutils_slow_write'] = function(block, generator) { var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC); var rate = generator.valueToCode(block, 'RATE', generator.ORDER_ATOMIC); return `textutils.slowWrite(${text}, ${rate})\n`; }; luaGenerator.forBlock['textutils_slow_print'] = function(block, generator) { var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC); var rate = generator.valueToCode(block, 'RATE', generator.ORDER_ATOMIC); return `textutils.slowPrint(${text}, ${rate})\n`; }; luaGenerator.forBlock['textutils_format_time'] = function(block, generator) { var time = generator.valueToCode(block, 'TIME', generator.ORDER_ATOMIC); var is24hour = generator.valueToCode(block, '24H', generator.ORDER_ATOMIC); return [`textutils.formatTime(${time}, ${is24hour})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_paged_print'] = function(block, generator) { var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC); var freeline = generator.valueToCode(block, 'FREELINES', generator.ORDER_ATOMIC); return `textutils.pagedPrint(${text}, ${freeline})\n`; }; luaGenerator.forBlock['textutils_tabulate'] = function(block, generator) { var args = generator.valueToCode(block, 'ARGS', generator.ORDER_ATOMIC); return `textutils.tabulate(${args})\n`; }; luaGenerator.forBlock['textutils_paged_tabulate'] = function(block, generator) { var args = generator.valueToCode(block, 'ARGS', generator.ORDER_ATOMIC); return `textutils.pagedTabulate(${args})\n`; }; luaGenerator.forBlock['textutils_empty_json_array'] = function(block, generator) { return [`textutils.textutils_empty_json_array`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_json_null'] = function(block, generator) { return [`textutils.json_null`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_serialize'] = function(block, generator) { var object = generator.valueToCode(block, 'OBJECT', generator.ORDER_ATOMIC); var compact = block.getFieldValue('COMPACT') == 'TRUE'; var repetitions = block.getFieldValue('ALLOWREPETI') == 'TRUE'; return [`textutils.serialize(${object}, {compact=${compact}, allow_repetitions=${repetitions}})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_unserialize'] = function(block, generator) { var object = generator.valueToCode(block, 'OBJECT', generator.ORDER_ATOMIC); return [`textutils.unserialize(${object})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_serialize_json'] = function(block, generator) { var object = generator.valueToCode(block, 'OBJECT', generator.ORDER_ATOMIC); var nbt = block.getFieldValue('NBT') == 'TRUE'; var unicode = block.getFieldValue('UNICODE') == 'TRUE'; var repetitions = block.getFieldValue('ALLOWREPETI') == 'TRUE'; return [`textutils.serializeJSON(${object}, {nbt_style=${nbt}, unicode_strings=${unicode}, allow_repetitions=${repetitions}})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_unserialize_json'] = function(block, generator) { var object = generator.valueToCode(block, 'OBJECT', generator.ORDER_ATOMIC); var nbt = block.getFieldValue('NBT') == 'TRUE'; var parse_null = block.getFieldValue('PARSENULL') == 'TRUE'; var parse_empty_array = block.getFieldValue('PARSEEA') == 'TRUE'; return [`textutils.unserializeJSON(${object}, {nbt_style=${nbt}, parse_null=${parse_null}, parse_empty_array=${parse_empty_array}})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_url_encode'] = function(block, generator) { var url = generator.valueToCode(block, 'URL', generator.ORDER_ATOMIC); return [`textutils.urlEncode(${url})`, luaGenerator.ORDER_NONE]; }; luaGenerator.forBlock['textutils_complete'] = function(block, generator) { var value_search_text = generator.valueToCode(block, 'SEARCH_TEXT', Blockly.Lua.ORDER_ATOMIC) || '""'; var value_search_table = generator.valueToCode(block, 'SEARCH_TABLE', Blockly.Lua.ORDER_ATOMIC) || '_G'; if (value_search_table == "") { return [`textutils.complete(${value_search_text})`]; } else { return [`textutils.complete(${value_search_text}, ${value_search_table})`]; } };