ccIDE/blocks/CCTextutils/generator.js
damp11113 5a4cbb455a update 1.2
add new block: CCSystem and CCTextutils
Fixed some bug
2024-07-28 23:50:52 +07:00

108 lines
4.5 KiB
JavaScript

// 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})`];
}
};