90 lines
3.5 KiB
JavaScript
90 lines
3.5 KiB
JavaScript
import * as Blockly from 'blockly/core';
|
|
|
|
export const variables_get = function (_, generator) {
|
|
// Variable getter.
|
|
var code = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
|
Blockly.Variables.NAME_TYPE);
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
// export const variables_declare = function() {
|
|
// var dropdown_type = this.getFieldValue('TYPE');
|
|
// var argument0;
|
|
// //TODO: settype to variable
|
|
// argument0 = generator.valueToCode(this, 'VALUE',generator.ORDER_ASSIGNMENT) || 'None';
|
|
// var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
|
// Blockly.Variables.NAME_TYPE);
|
|
|
|
// if (dropdown_type === 'number')
|
|
// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = 0;';
|
|
// else if(dropdown_type === 'string')
|
|
// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = \'\';';
|
|
// else if(dropdown_type === 'boolean')
|
|
// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = true;';
|
|
// else if(dropdown_type.startsWith('Array'))
|
|
// generator.definitions_['var_declare' + varName] = 'let ' + varName + ':' + dropdown_type + ' = [];';
|
|
|
|
// if(generator.setups_['var_declare' + varName] === undefined) {
|
|
// generator.setups_['var_declare' + varName] = varName + ' = ' + argument0 + '\n';
|
|
// }else {
|
|
// }
|
|
// return '';
|
|
// }
|
|
|
|
export const variables_set = function (_, generator) {
|
|
// Variable setter.
|
|
if (this.getFieldValue('VAR') == "") {
|
|
return " = None\n";
|
|
}
|
|
var argument0 = generator.valueToCode(this, 'VALUE',
|
|
generator.ORDER_ASSIGNMENT) || 'None';
|
|
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE);
|
|
return varName + ' = ' + argument0 + '\n';
|
|
}
|
|
|
|
export const variables_change = function (_, generator) {
|
|
// Variable setter.
|
|
var operator = this.getFieldValue('OP');
|
|
var varName = generator.valueToCode(this, 'MYVALUE', generator.ORDER_ATOMIC) || 'None';
|
|
if (operator == 'bytes') { var code = operator + '(' + varName + ',"UTF-8")'; }
|
|
else { var code = operator + '(' + varName + ')'; }
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const variables_global = function (_, generator) {
|
|
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || 'None';
|
|
var code = "global " + str + '\n';
|
|
return code;
|
|
}
|
|
|
|
// ok
|
|
export const controls_type = function (_, generator) {
|
|
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || 'None'
|
|
var code = 'type(' + data + ')';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const controls_typeLists = function (_, generator) {
|
|
//generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
|
var type = this.getFieldValue('type');
|
|
// generator.definitions_['func_type' + type] = code;
|
|
return [type, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const lists_zip = function (_, generator) {
|
|
var code = new Array(this.itemCount_);
|
|
var default_value = '[]';
|
|
for (var n = 0; n < this.itemCount_; n++) {
|
|
code[n] = generator.valueToCode(this, 'ADD' + n,
|
|
generator.ORDER_NONE) || default_value;
|
|
}
|
|
var code = 'zip(' + code.join(', ') + ')';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const unpack_iterable_object = function (_, generator) {
|
|
const varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '[]';
|
|
const type = this.getFieldValue('TYPE');
|
|
const code = `${type}(${varName})`;
|
|
return [code, generator.ORDER_ATOMIC];
|
|
} |