Update(boards): 所有板卡执行 build:prod

This commit is contained in:
王立帮
2024-09-21 22:29:48 +08:00
parent 61ae2048fb
commit 6501c5895c
102 changed files with 1447 additions and 52068 deletions

View File

@@ -2,7 +2,7 @@ import * as Blockly from 'blockly/core';
import * as Mixly from 'mixly';
/**
* @name 模块名 Http GET请求
* @name 模块名 Http GET请求
* @support 支持板卡 {ESP8266, ESP32, ESP32C3, ESP32S2, ESP32S3}
*/
export const http_get = function () {
@@ -1323,18 +1323,18 @@ export const weather_seniverse_city_weather = function () {
Blockly.Arduino.setups_['setup_serial_Serial'] = 'Serial.begin(9600);';
switch (api) {
case 'weather/now':
Blockly.Arduino.definitions_['var_declare_weatherNow'] = 'WeatherNow weatherNow;';
Blockly.Arduino.setups_['setup_seniverse_weatherNow'] = 'weatherNow.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
break;
case 'weather/daily':
Blockly.Arduino.definitions_['var_declare_forecast'] = 'Forecast forecast;';
Blockly.Arduino.setups_['setup_seniverse_forecast'] = 'forecast.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
break;
case 'life/suggestion':
default:
Blockly.Arduino.definitions_['var_declare_lifeInfo'] = 'LifeInfo lifeInfo;';
Blockly.Arduino.setups_['setup_seniverse_lifeInfo'] = 'lifeInfo.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
case 'weather/now':
Blockly.Arduino.definitions_['var_declare_weatherNow'] = 'WeatherNow weatherNow;';
Blockly.Arduino.setups_['setup_seniverse_weatherNow'] = 'weatherNow.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
break;
case 'weather/daily':
Blockly.Arduino.definitions_['var_declare_forecast'] = 'Forecast forecast;';
Blockly.Arduino.setups_['setup_seniverse_forecast'] = 'forecast.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
break;
case 'life/suggestion':
default:
Blockly.Arduino.definitions_['var_declare_lifeInfo'] = 'LifeInfo lifeInfo;';
Blockly.Arduino.setups_['setup_seniverse_lifeInfo'] = 'lifeInfo.config(' + private_key + ', ' + location + ', "' + unit + '", "' + language + '");';
}
var code = '';
@@ -1346,15 +1346,15 @@ export const weather_get_seniverse_weather_info = function () {
var type = this.getFieldValue("type");
var code = '';
switch (api) {
case 'weather/now':
code = 'weatherNow.' + type + '()';
break;
case 'weather/daily':
code = 'forecast.' + type + '()';
break;
case 'life/suggestion':
default:
code = 'lifeInfo.' + type + '()';
case 'weather/now':
code = 'weatherNow.' + type + '()';
break;
case 'weather/daily':
code = 'forecast.' + type + '()';
break;
case 'life/suggestion':
default:
code = 'lifeInfo.' + type + '()';
}
return [code, Blockly.Arduino.ORDER_ATOMIC];

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/arduino",
"version": "1.6.0",
"version": "1.7.0",
"description": "适用于mixly的arduino模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -11,11 +11,6 @@ export const base_setup = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id2"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "初始化"],
},
};
},
};
@@ -37,11 +32,6 @@ export const controls_delay = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id9"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "延时"],
},
};
},
};
@@ -70,11 +60,6 @@ export const controls_for = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id2"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "for 循环"],
},
};
var thisBlock = this;
this.setTooltip(function () {
return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace(
@@ -106,11 +91,6 @@ export const controls_whileUntil = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#while"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "while 循环"],
},
};
var thisBlock = this;
this.setTooltip(function () {
var op = thisBlock.getFieldValue("MODE");
@@ -148,11 +128,6 @@ export const controls_flow_statements = {
};
return TOOLTIPS[op];
});
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "跳出循环"],
},
};
},
onchange: function () {
if (!this.workspace) {
@@ -199,11 +174,6 @@ export const controls_millis = {
.appendField(new Blockly.FieldDropdown(UNIT), "UNIT");
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_MILLIS);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "系统运行时间"],
},
};
},
};
@@ -226,11 +196,6 @@ export const controls_if = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#if"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "if 选择"],
},
};
this.setMutator(
new Blockly.icons.MutatorIcon(
["controls_if_elseif", "controls_if_else"],
@@ -378,17 +343,17 @@ export const controls_if = {
var elseStatementConnection = null;
while (clauseBlock) {
switch (clauseBlock.type) {
case "controls_if_elseif":
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case "controls_if_else":
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error("Unknown block type: " + clauseBlock.type);
case "controls_if_elseif":
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case "controls_if_else":
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error("Unknown block type: " + clauseBlock.type);
}
clauseBlock =
clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock();
@@ -412,22 +377,22 @@ export const controls_if = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case "controls_if_elseif":
var inputIf = this.getInput("IF" + i);
var inputDo = this.getInput("DO" + i);
clauseBlock.valueConnection_ =
case "controls_if_elseif":
var inputIf = this.getInput("IF" + i);
var inputDo = this.getInput("DO" + i);
clauseBlock.valueConnection_ =
inputIf && inputIf.connection.targetConnection;
clauseBlock.statementConnection_ =
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
case "controls_if_else":
var inputDo = this.getInput("ELSE");
clauseBlock.statementConnection_ =
i++;
break;
case "controls_if_else":
var inputDo = this.getInput("ELSE");
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
break;
default:
throw "Unknown block type.";
break;
default:
throw "Unknown block type.";
}
clauseBlock =
clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock();
@@ -573,11 +538,6 @@ export const controls_switch_case = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#switch"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "switch 选择"],
},
};
this.setMutator(
new Blockly.icons.MutatorIcon(["controls_case", "controls_default"], this)
);
@@ -666,32 +626,32 @@ export const controls_switch_case = {
var clauseBlock = containerBlock.getInputTargetBlock("STACK");
while (clauseBlock) {
switch (clauseBlock.type) {
case "controls_case":
this.elseifCount_++;
var ifInput = this.appendValueInput("IF" + this.elseifCount_)
.setCheck([Number, Boolean])
.appendField("case");
var doInput = this.appendStatementInput("DO" + this.elseifCount_);
doInput.appendField("");
// Reconnect any child blocks.
if (clauseBlock.valueConnection_) {
ifInput.connection.connect(clauseBlock.valueConnection_);
}
if (clauseBlock.statementConnection_) {
doInput.connection.connect(clauseBlock.statementConnection_);
}
break;
case "controls_default":
this.elseCount_++;
var elseInput = this.appendStatementInput("ELSE");
elseInput.appendField("default");
// Reconnect any child blocks.
if (clauseBlock.statementConnection_) {
elseInput.connection.connect(clauseBlock.statementConnection_);
}
break;
default:
throw "Unknown block type.";
case "controls_case":
this.elseifCount_++;
var ifInput = this.appendValueInput("IF" + this.elseifCount_)
.setCheck([Number, Boolean])
.appendField("case");
var doInput = this.appendStatementInput("DO" + this.elseifCount_);
doInput.appendField("");
// Reconnect any child blocks.
if (clauseBlock.valueConnection_) {
ifInput.connection.connect(clauseBlock.valueConnection_);
}
if (clauseBlock.statementConnection_) {
doInput.connection.connect(clauseBlock.statementConnection_);
}
break;
case "controls_default":
this.elseCount_++;
var elseInput = this.appendStatementInput("ELSE");
elseInput.appendField("default");
// Reconnect any child blocks.
if (clauseBlock.statementConnection_) {
elseInput.connection.connect(clauseBlock.statementConnection_);
}
break;
default:
throw "Unknown block type.";
}
clauseBlock =
clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock();
@@ -707,22 +667,22 @@ export const controls_switch_case = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case "controls_case":
var inputIf = this.getInput("IF" + i);
var inputDo = this.getInput("DO" + i);
clauseBlock.valueConnection_ =
case "controls_case":
var inputIf = this.getInput("IF" + i);
var inputDo = this.getInput("DO" + i);
clauseBlock.valueConnection_ =
inputIf && inputIf.connection.targetConnection;
clauseBlock.statementConnection_ =
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
case "controls_default":
var inputDo = this.getInput("ELSE");
clauseBlock.statementConnection_ =
i++;
break;
case "controls_default":
var inputDo = this.getInput("ELSE");
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
break;
default:
throw "Unknown block type.";
break;
default:
throw "Unknown block type.";
}
clauseBlock =
clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock();
@@ -785,11 +745,6 @@ export const controls_mstimer2 = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#MsTimer2"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "MsTimer2 定时器"],
},
};
},
};
@@ -805,12 +760,6 @@ export const controls_mstimer2_start = {
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id45"
);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_MSTIMER2_START);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "MsTimer2 定时器"],
scrollPos: "MsTimer2 定时器启动",
},
};
},
};
@@ -826,12 +775,6 @@ export const controls_mstimer2_stop = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id48"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "MsTimer2 定时器"],
scrollPos: "MsTimer2 定时器停止",
},
};
},
};
@@ -864,12 +807,6 @@ export const controls_interrupts = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id51"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "中断"],
scrollPos: "允许中断",
},
};
},
};
@@ -883,12 +820,6 @@ export const controls_nointerrupts = {
this.setHelpUrl(
"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id55"
);
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "中断"],
scrollPos: "禁止中断",
},
};
},
};
export const base_delay = controls_delay;
@@ -928,11 +859,6 @@ export const simple_timer = {
this.setColour(120);
this.setTooltip();
this.setHelpUrl("");
this.wiki = {
"zh-hans": {
page: ["Arduino AVR", "控制", "简单定时器"],
},
};
},
};
//do-while循环

View File

@@ -2105,12 +2105,12 @@ export const tft_generate_bitmap_data = {
layero.find('button').click((event) => {
const mId = $(event.currentTarget).attr('m-id');
switch (mId) {
case '0':
this.loadImg(layero);
break;
case '1':
this.writeJson();
break;
case '0':
this.loadImg(layero);
break;
case '1':
this.writeJson();
break;
}
});
},
@@ -2176,25 +2176,25 @@ export const tft_generate_bitmap_data = {
const mark = (i + 1) % 4;
let hexData, addition = '';
switch (mark) {
case 1:
pixelData = (data[i] >> 3) & 0x001F;
break;
case 2:
pixelData = (pixelData & 0x001F) << 6;
pixelData = pixelData | ((data[i] >> 2) & 0x003F);
break;
case 3:
pixelData = (pixelData & 0x07FF) << 5;
pixelData = pixelData | ((data[i] >> 3) & 0x001F);
break;
default:
hexData = pixelData.toString(16);
for (let j = 4; j > hexData.length; j--) {
addition += '0';
}
hexData = addition + hexData;
bitmapStr += '0x' + hexData + (i === data.length - 1 ? '' : ',');
pixelData = 0;
case 1:
pixelData = (data[i] >> 3) & 0x001F;
break;
case 2:
pixelData = (pixelData & 0x001F) << 6;
pixelData = pixelData | ((data[i] >> 2) & 0x003F);
break;
case 3:
pixelData = (pixelData & 0x07FF) << 5;
pixelData = pixelData | ((data[i] >> 3) & 0x001F);
break;
default:
hexData = pixelData.toString(16);
for (let j = 4; j > hexData.length; j--) {
addition += '0';
}
hexData = addition + hexData;
bitmapStr += '0x' + hexData + (i === data.length - 1 ? '' : ',');
pixelData = 0;
}
if ((i + 1) % 400 === 0 && i !== data.length - 1)
bitmapStr += '\n ';
@@ -2213,12 +2213,12 @@ export const tft_generate_bitmap_data = {
const inputDom = $(inputsDom[i]);
const mId = inputDom.attr('m-id');
switch (mId) {
case '0':
imgSize.width = parseInt(inputDom.val()) ?? 100;
break;
case '1':
imgSize.height = parseInt(inputDom.val()) ?? 100;
break;
case '0':
imgSize.width = parseInt(inputDom.val()) ?? 100;
break;
case '1':
imgSize.height = parseInt(inputDom.val()) ?? 100;
break;
}
}
if (imgSize.width > 300)

View File

@@ -477,12 +477,12 @@ export const MQTT_subscribe = {
var statementConnections = [null];
while (clauseBlock) {
switch (clauseBlock.type) {
case 'MQTT_add_subscribe_topic':
this.elseifCount_++;
statementConnections.push(clauseBlock.statementConnection_);
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
case 'MQTT_add_subscribe_topic':
this.elseifCount_++;
statementConnections.push(clauseBlock.statementConnection_);
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -503,14 +503,14 @@ export const MQTT_subscribe = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'MQTT_add_subscribe_topic':
var inputDo = this.getInput('DO' + i);
clauseBlock.statementConnection_ =
case 'MQTT_add_subscribe_topic':
var inputDo = this.getInput('DO' + i);
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
default:
throw 'Unknown block type.';
i++;
break;
default:
throw 'Unknown block type.';
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();

View File

@@ -26,11 +26,6 @@ export const inout_pinMode = {
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_pinMode);
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '管脚模式']
}
};
}
};
@@ -49,11 +44,6 @@ export const inout_digital_write2 = {
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.LANG_INOUT_DIGITAL_WRITE_TOOLTIP);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id2");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '数字输出']
}
};
}
};
@@ -66,11 +56,6 @@ export const inout_digital_read = {
this.setOutput(true, [Boolean, Number]);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_DIGITAL_READ);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id7");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '数字输入']
}
};
}
};
@@ -84,11 +69,6 @@ export const inout_digital_read2 = {
this.setOutput(true, [Boolean, Number]);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_DIGITAL_READ);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id19");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '数字输入']
}
};
}
};
@@ -106,11 +86,6 @@ export const inout_analog_write = {
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ANALOG_WRITE);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id13");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '模拟输出']
}
};
}
};
@@ -124,11 +99,6 @@ export const inout_analog_read = {
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ANALOG_READ);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id13");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '模拟输入']
}
};
}
};
@@ -160,11 +130,6 @@ export const OneButton_interrupt = {
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);
this.setHelpUrl();
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '多功能按键']
}
};
}
};
@@ -183,12 +148,6 @@ export const controls_attachInterrupt = {
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id25");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '硬件中断'],
scrollPos: '硬件中断'
}
};
}
};
@@ -203,12 +162,6 @@ export const controls_detachInterrupt = {
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_DETACHINTERRUPT);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id30");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '硬件中断'],
scrollPos: '取消硬件中断'
}
};
}
};
@@ -226,12 +179,6 @@ export const controls_attachPinInterrupt = {
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '软件中断'],
scrollPos: '软件中断'
}
};
}
};
@@ -244,12 +191,6 @@ export const controls_detachPinInterrupt = {
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_DETACHINTERRUPT);
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '软件中断'],
scrollPos: '取消软件中断'
}
};
}
};
@@ -265,11 +206,6 @@ export const inout_pulseIn = {
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_pulseIn);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id33");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '脉冲长度']
}
};
}
};
@@ -289,11 +225,6 @@ export const inout_pulseIn2 = {
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_pulseIn2);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id33");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', '脉冲长度']
}
};
}
};
@@ -319,11 +250,6 @@ export const inout_shiftout = {
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_shiftout);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#shiftout");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '输入输出', 'ShiftOut']
}
};
}
};

View File

@@ -17,11 +17,6 @@ export const SCoopTask = {
this.setColour(SCOOP_HUE);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SCOOP);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#scoop-task");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '控制', 'SCoop Task']
}
};
}
};
@@ -34,11 +29,6 @@ export const SCoop_yield = {
this.setNextStatement(false, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SCOOP_YIELD);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#scoop-task");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '控制', 'SCoop Task']
}
};
}
};
export const SCoop_sleep = {
@@ -53,11 +43,5 @@ export const SCoop_sleep = {
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SCOOP_SLEEP);
this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#scoop-task");
this.wiki = {
'zh-hans': {
page: ['Arduino AVR', '控制', 'SCoop Task']
}
};
}
};

View File

@@ -117,10 +117,10 @@ export const controls_whileUntil = function (_, generator) {
export const controls_flow_statements = function () {
// Flow statements: continue, break.
switch (this.getFieldValue('FLOW')) {
case 'BREAK':
return 'break;\n';
case 'CONTINUE':
return 'continue;\n';
case 'BREAK':
return 'break;\n';
case 'CONTINUE':
return 'continue;\n';
}
throw 'Unknown flow statement.';
};

View File

@@ -972,84 +972,84 @@ export const TFT_st7735_show_hz = function (_, generator) {
var hz_sharp = "";
switch (dropdown_st7735_hz_sharp) {
case "STHeiti":
hz_sharp = "华文黑体";
break;
case "STKaiti":
hz_sharp = "华文楷体";
break;
case "STXihei":
hz_sharp = "华文细黑";
break;
case "STSong":
hz_sharp = "华文宋体";
break;
case "STZhongsong":
hz_sharp = "华文中宋";
break;
case "STFangsong":
hz_sharp = "华文仿宋";
break;
case "STCaiyun":
hz_sharp = "华文彩云";
break;
case "STHupo":
hz_sharp = "华文琥珀";
break;
case "STLiti":
hz_sharp = "华文隶书";
break;
case "STXingkai":
hz_sharp = "华文行楷";
break;
case "STXinwei":
hz_sharp = "华文新魏";
break;
case "simHei":
hz_sharp = "黑体";
break;
case "simSun":
hz_sharp = "宋体";
break;
case "NSimSun":
hz_sharp = "新宋体";
break;
case "FangSong":
hz_sharp = "仿宋";
break;
case "KaiTi":
hz_sharp = "楷体";
break;
case "FangSong_GB2312":
hz_sharp = "仿宋_GB2312";
break;
case "KaiTi_GB2312":
hz_sharp = "楷体_GB2312";
break;
case "LiSu":
hz_sharp = "隶书";
break;
case "YouYuan":
hz_sharp = "幼圆";
break;
case "PMingLiU":
hz_sharp = "新细明体";
break;
case "MingLiU":
hz_sharp = "细明体";
break;
case "DFKai-SB":
hz_sharp = "标楷体";
break;
case "Microsoft JhengHei":
hz_sharp = "微软正黑体";
break;
case "Microsoft YaHei":
hz_sharp = "微软雅黑体";
break;
default:
hz_sharp = dropdown_st7735_hz_sharp;
break;
case "STHeiti":
hz_sharp = "华文黑体";
break;
case "STKaiti":
hz_sharp = "华文楷体";
break;
case "STXihei":
hz_sharp = "华文细黑";
break;
case "STSong":
hz_sharp = "华文宋体";
break;
case "STZhongsong":
hz_sharp = "华文中宋";
break;
case "STFangsong":
hz_sharp = "华文仿宋";
break;
case "STCaiyun":
hz_sharp = "华文彩云";
break;
case "STHupo":
hz_sharp = "华文琥珀";
break;
case "STLiti":
hz_sharp = "华文隶书";
break;
case "STXingkai":
hz_sharp = "华文行楷";
break;
case "STXinwei":
hz_sharp = "华文新魏";
break;
case "simHei":
hz_sharp = "黑体";
break;
case "simSun":
hz_sharp = "宋体";
break;
case "NSimSun":
hz_sharp = "新宋体";
break;
case "FangSong":
hz_sharp = "仿宋";
break;
case "KaiTi":
hz_sharp = "楷体";
break;
case "FangSong_GB2312":
hz_sharp = "仿宋_GB2312";
break;
case "KaiTi_GB2312":
hz_sharp = "楷体_GB2312";
break;
case "LiSu":
hz_sharp = "隶书";
break;
case "YouYuan":
hz_sharp = "幼圆";
break;
case "PMingLiU":
hz_sharp = "新细明体";
break;
case "MingLiU":
hz_sharp = "细明体";
break;
case "DFKai-SB":
hz_sharp = "标楷体";
break;
case "Microsoft JhengHei":
hz_sharp = "微软正黑体";
break;
case "Microsoft YaHei":
hz_sharp = "微软雅黑体";
break;
default:
hz_sharp = dropdown_st7735_hz_sharp;
break;
}
hz_sharp = "字体:" + hz_sharp + " 字号:" + text_st7735_hz_line_height + "px" + " 显示文字:" + value_st7735_hz_data;

View File

@@ -75,68 +75,68 @@ export const math_single = function (_, generator) {
}
// First, handle cases which generate values that don't need parentheses.
switch (operator) {
case 'ABS':
code = arg + '.abs()';
break;
case 'ROOT':
code = 'sqrt(' + arg + ')';
break;
case 'LN':
code = 'log(' + arg + ')';
break;
case 'EXP':
code = 'exp(' + arg + ')';
break;
case 'POW10':
code = 'pow(10,' + arg + ')';
break;
case '++':
code = '(++' + arg + ')';
break;
case '--':
code = '(--' + arg + ')';
break;
case '~':
code = '~(' + arg + ')';
break;
case 'ROUND':
code = arg + '.round()';
break;
case 'ROUNDUP':
code = arg + '.ceil()';
break;
case 'ROUNDDOWN':
code = arg + '.floor()';
break;
case 'SIN':
code = 'sin(' + arg + ' / 180.0 * 3.14159)';
break;
case 'COS':
code = 'cos(' + arg + ' / 180.0 * 3.14159)';
break;
case 'TAN':
code = 'tan(' + arg + ' / 180.0 * 3.14159)';
break;
case 'ABS':
code = arg + '.abs()';
break;
case 'ROOT':
code = 'sqrt(' + arg + ')';
break;
case 'LN':
code = 'log(' + arg + ')';
break;
case 'EXP':
code = 'exp(' + arg + ')';
break;
case 'POW10':
code = 'pow(10,' + arg + ')';
break;
case '++':
code = '(++' + arg + ')';
break;
case '--':
code = '(--' + arg + ')';
break;
case '~':
code = '~(' + arg + ')';
break;
case 'ROUND':
code = arg + '.round()';
break;
case 'ROUNDUP':
code = arg + '.ceil()';
break;
case 'ROUNDDOWN':
code = arg + '.floor()';
break;
case 'SIN':
code = 'sin(' + arg + ' / 180.0 * 3.14159)';
break;
case 'COS':
code = 'cos(' + arg + ' / 180.0 * 3.14159)';
break;
case 'TAN':
code = 'tan(' + arg + ' / 180.0 * 3.14159)';
break;
}
if (code) {
return [code, generator.ORDER_UNARY_POSTFIX];
}
// Second, handle cases which generate values that may need parentheses.
switch (operator) {
case 'LOG10':
code = 'log(' + arg + ') / log(10)';
break;
case 'ASIN':
code = 'asin(' + arg + ') / 3.14159 * 180';
break;
case 'ACOS':
code = 'acos(' + arg + ') / 3.14159 * 180';
break;
case 'ATAN':
code = 'atan(' + arg + ') / 3.14159 * 180';
break;
default:
throw 'Unknown math operator: ' + operator;
case 'LOG10':
code = 'log(' + arg + ') / log(10)';
break;
case 'ASIN':
code = 'asin(' + arg + ') / 3.14159 * 180';
break;
case 'ACOS':
code = 'acos(' + arg + ') / 3.14159 * 180';
break;
case 'ATAN':
code = 'atan(' + arg + ') / 3.14159 * 180';
break;
default:
throw 'Unknown math operator: ' + operator;
}
return [code, generator.ORDER_MULTIPLICATIVE];
}

View File

@@ -176,44 +176,44 @@ export const RTC_date = function (_, generator) {
var day = generator.valueToCode(this, "day", generator.ORDER_ATOMIC);
switch (month) {
case '1':
month = 'Jan';
break;
case '2':
month = 'Feb';
break;
case '3':
month = 'Mar';
break;
case '4':
month = 'Apr';
break;
case '5':
month = 'May';
break;
case '6':
month = 'Jun';
break;
case '7':
month = 'Jul';
break;
case '8':
month = 'Aug';
break;
case '9':
month = 'Sep';
break;
case '10':
month = 'Oct';
break;
case '11':
month = 'Nov';
break;
case '12':
month = 'Dec';
break;
default:
month = 'Jan';
case '1':
month = 'Jan';
break;
case '2':
month = 'Feb';
break;
case '3':
month = 'Mar';
break;
case '4':
month = 'Apr';
break;
case '5':
month = 'May';
break;
case '6':
month = 'Jun';
break;
case '7':
month = 'Jul';
break;
case '8':
month = 'Aug';
break;
case '9':
month = 'Sep';
break;
case '10':
month = 'Oct';
break;
case '11':
month = 'Nov';
break;
case '12':
month = 'Dec';
break;
default:
month = 'Jan';
}
if (day.length == 1)
day = '0' + day;
@@ -444,21 +444,21 @@ export const sensor_encoder_handle = function (_, generator) {
var statementsDo = generator.statementToCode(this, 'DO');
var cbFuncName = 'encoder' + dropdownType;
switch (dropdownOperateType) {
case 'setChangedHandler':
cbFuncName += 'OnChanged';
break;
case 'setRightRotationHandler':
cbFuncName += 'OnRightRotation';
break;
case 'setLeftRotationHandler':
cbFuncName += 'OnLeftRotation';
break;
case 'setUpperOverflowHandler':
cbFuncName += 'OnUpperOverflow';
break;
case 'setLowerOverflowHandler':
default:
cbFuncName += 'OnLowerOverflow';
case 'setChangedHandler':
cbFuncName += 'OnChanged';
break;
case 'setRightRotationHandler':
cbFuncName += 'OnRightRotation';
break;
case 'setLeftRotationHandler':
cbFuncName += 'OnLeftRotation';
break;
case 'setUpperOverflowHandler':
cbFuncName += 'OnUpperOverflow';
break;
case 'setLowerOverflowHandler':
default:
cbFuncName += 'OnLowerOverflow';
}
generator.definitions_['function_' + cbFuncName] = `void ${cbFuncName}(ESPRotary& encoder${dropdownType}) {\n`
+ ` ${statementsDo}`

View File

@@ -62,86 +62,54 @@ export const IICSCAN = function (_, generator) {
function string_Bin_to_Hex(outstr_select) {
switch (outstr_select) {
case '0000':
{
outstr_select = '0';
break;
}
case '0001':
{
outstr_select = '1';
break;
}
case '0010':
{
outstr_select = '2';
break;
}
case '0011':
{
outstr_select = '3';
break;
}
case '0100':
{
outstr_select = '4';
break;
}
case '0101':
{
outstr_select = '5';
break;
}
case '0110':
{
outstr_select = '6';
break;
}
case '0111':
{
outstr_select = '7';
break;
}
case '1000':
{
outstr_select = '8';
break;
}
case '1001':
{
outstr_select = '9';
break;
}
case '1010':
{
outstr_select = 'A';
break;
}
case '1011':
{
outstr_select = 'B';
break;
}
case '1100':
{
outstr_select = 'C';
break;
}
case '1101':
{
outstr_select = 'D';
break;
}
case '1110':
{
outstr_select = 'E';
break;
}
case '1111':
{
outstr_select = 'F';
break;
}
case '0000':
outstr_select = '0';
break;
case '0001':
outstr_select = '1';
break;
case '0010':
outstr_select = '2';
break;
case '0011':
outstr_select = '3';
break;
case '0100':
outstr_select = '4';
break;
case '0101':
outstr_select = '5';
break;
case '0110':
outstr_select = '6';
break;
case '0111':
outstr_select = '7';
break;
case '1000':
outstr_select = '8';
break;
case '1001':
outstr_select = '9';
break;
case '1010':
outstr_select = 'A';
break;
case '1011':
outstr_select = 'B';
break;
case '1100':
outstr_select = 'C';
break;
case '1101':
outstr_select = 'D';
break;
case '1110':
outstr_select = 'E';
break;
case '1111':
outstr_select = 'F';
break;
}
return outstr_select;
}
@@ -307,84 +275,84 @@ export const tool_modulus = function (_, generator) {
var hz_sharp = "";
switch (dropdown_hz_sharp) {
case "STHeiti":
hz_sharp = "华文黑体";
break;
case "STKaiti":
hz_sharp = "华文楷体";
break;
case "STXihei":
hz_sharp = "华文细黑";
break;
case "STSong":
hz_sharp = "华文宋体";
break;
case "STZhongsong":
hz_sharp = "华文中宋";
break;
case "STFangsong":
hz_sharp = "华文仿宋";
break;
case "STCaiyun":
hz_sharp = "华文彩云";
break;
case "STHupo":
hz_sharp = "华文琥珀";
break;
case "STLiti":
hz_sharp = "华文隶书";
break;
case "STXingkai":
hz_sharp = "华文行楷";
break;
case "STXinwei":
hz_sharp = "华文新魏";
break;
case "simHei":
hz_sharp = "黑体";
break;
case "simSun":
hz_sharp = "宋体";
break;
case "NSimSun":
hz_sharp = "新宋体";
break;
case "FangSong":
hz_sharp = "仿宋";
break;
case "KaiTi":
hz_sharp = "楷体";
break;
case "FangSong_GB2312":
hz_sharp = "仿宋_GB2312";
break;
case "KaiTi_GB2312":
hz_sharp = "楷体_GB2312";
break;
case "LiSu":
hz_sharp = "隶书";
break;
case "YouYuan":
hz_sharp = "幼圆";
break;
case "PMingLiU":
hz_sharp = "新细明体";
break;
case "MingLiU":
hz_sharp = "细明体";
break;
case "DFKai-SB":
hz_sharp = "标楷体";
break;
case "Microsoft JhengHei":
hz_sharp = "微软正黑体";
break;
case "Microsoft YaHei":
hz_sharp = "微软雅黑体";
break;
default:
hz_sharp = dropdown_hz_sharp;
break;
case "STHeiti":
hz_sharp = "华文黑体";
break;
case "STKaiti":
hz_sharp = "华文楷体";
break;
case "STXihei":
hz_sharp = "华文细黑";
break;
case "STSong":
hz_sharp = "华文宋体";
break;
case "STZhongsong":
hz_sharp = "华文中宋";
break;
case "STFangsong":
hz_sharp = "华文仿宋";
break;
case "STCaiyun":
hz_sharp = "华文彩云";
break;
case "STHupo":
hz_sharp = "华文琥珀";
break;
case "STLiti":
hz_sharp = "华文隶书";
break;
case "STXingkai":
hz_sharp = "华文行楷";
break;
case "STXinwei":
hz_sharp = "华文新魏";
break;
case "simHei":
hz_sharp = "黑体";
break;
case "simSun":
hz_sharp = "宋体";
break;
case "NSimSun":
hz_sharp = "新宋体";
break;
case "FangSong":
hz_sharp = "仿宋";
break;
case "KaiTi":
hz_sharp = "楷体";
break;
case "FangSong_GB2312":
hz_sharp = "仿宋_GB2312";
break;
case "KaiTi_GB2312":
hz_sharp = "楷体_GB2312";
break;
case "LiSu":
hz_sharp = "隶书";
break;
case "YouYuan":
hz_sharp = "幼圆";
break;
case "PMingLiU":
hz_sharp = "新细明体";
break;
case "MingLiU":
hz_sharp = "细明体";
break;
case "DFKai-SB":
hz_sharp = "标楷体";
break;
case "Microsoft JhengHei":
hz_sharp = "微软正黑体";
break;
case "Microsoft YaHei":
hz_sharp = "微软雅黑体";
break;
default:
hz_sharp = dropdown_hz_sharp;
break;
}
hz_sharp = "字体:" + hz_sharp + " 字号:" + text_hz_line_height + "px" + " 显示文字:" + text_input_data + '\n' + HZ_image;

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/arduino-avr",
"version": "1.6.0",
"version": "1.8.0",
"description": "适用于mixly的arduino avr模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/arduino-esp8266",
"version": "1.3.0",
"version": "1.4.0",
"description": "适用于mixly的arduino esp8266模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -234,20 +234,20 @@ export const actuator_onboard_neopixel_rgb = {
this.setNextStatement(true, null);
const boardKey = Boards.getSelectedBoardKey();
switch (boardKey) {
case 'micropython:esp32c3:mixgo_cc':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32s2:mixgo_ce':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32c3:mixgo_me':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
break;
case 'micropython:esp32:mPython':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);
break;
default:
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
case 'micropython:esp32c3:mixgo_cc':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32s2:mixgo_ce':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32c3:mixgo_me':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
break;
case 'micropython:esp32:mPython':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);
break;
default:
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
}
}
};
@@ -368,17 +368,17 @@ export const actuator_rm_onboard_neopixel_rgb = {
this.setNextStatement(true, null);
const boardKey = Boards.getSelectedBoardKey();
switch (boardKey) {
case 'micropython:esp32c3:mixgocc':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32c3:mixgome':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
break;
case 'micropython:esp32:mPython':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);
break;
default:
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
case 'micropython:esp32c3:mixgocc':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);
break;
case 'micropython:esp32c3:mixgome':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
break;
case 'micropython:esp32:mPython':
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);
break;
default:
this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);
}
}
};
@@ -1003,7 +1003,7 @@ export const analog_keyboard_input = {
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.ANALOG+Blockly.Msg.MIXLY_KEYBOARD_INPUT);
.appendField(Blockly.Msg.ANALOG + Blockly.Msg.MIXLY_KEYBOARD_INPUT);
this.appendValueInput('special');
this.appendValueInput('general');
this.appendDummyInput()
@@ -1011,7 +1011,7 @@ export const analog_keyboard_input = {
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MICROPYTHON_DISPLAY_YES, "True"],
[Blockly.Msg.MICROPYTHON_DISPLAY_NO, "False"]
]),'release');
]), 'release');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -1025,7 +1025,7 @@ export const special_key = {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SPECIAL_KEY)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_SPECIAL_KEY0,"0x00"],
[Blockly.Msg.MIXLY_SPECIAL_KEY0, "0x00"],
[Blockly.Msg.MIXLY_SPECIAL_KEY1, "0x01"],
[Blockly.Msg.MIXLY_SPECIAL_KEY2, "0x02"],
[Blockly.Msg.MIXLY_SPECIAL_KEY1, "0x04"],
@@ -1045,7 +1045,7 @@ export const general_key = {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_GENERAL_KEY)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_SPECIAL_KEY0,"0x00"],
[Blockly.Msg.MIXLY_SPECIAL_KEY0, "0x00"],
['A', "0x04"],
['B', "0x05"],
['C', "0x06"],
@@ -1093,7 +1093,7 @@ export const general_key = {
['] }', "0x30"],
['\\ |', "0x31"],
['; :', "0x33"],
["' "+' "', "0x34"],
["' " + ' "', "0x34"],
['` ~', "0x35"],
[', <', "0x36"],
['. >', "0x37"],
@@ -1157,155 +1157,155 @@ export const general_key_tuple = {
this.setTooltip(Blockly.Msg.GENERALKEY_TUPLE_CREATE_TOOLTIP);
},
mutationToDom: function() {
mutationToDom: function () {
var container = document.createElement('mutation');
container.setAttribute('items', this.itemCount_);
return container;
},
/**
* Parse XML to restore the list inputs.
* @param {!Element} xmlElement XML storage element.
* @this Blockly.Block
*/
domToMutation: function(xmlElement) {
/**
* Parse XML to restore the list inputs.
* @param {!Element} xmlElement XML storage element.
* @this Blockly.Block
*/
domToMutation: function (xmlElement) {
this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
this.updateShape_();
},
/**
* Populate the mutator's dialog with this block's components.
* @param {!Blockly.Workspace} workspace Mutator's workspace.
* @return {!Blockly.Block} Root block in mutator.
* @this Blockly.Block
*/
decompose: function(workspace) {
/**
* Populate the mutator's dialog with this block's components.
* @param {!Blockly.Workspace} workspace Mutator's workspace.
* @return {!Blockly.Block} Root block in mutator.
* @this Blockly.Block
*/
decompose: function (workspace) {
var containerBlock =
workspace.newBlock('generalkey_container');
containerBlock.initSvg();
var connection = containerBlock.getInput('STACK').connection;
for (var i = 0; i < this.itemCount_; i++) {
var itemBlock = workspace.newBlock('generalkey_create_with_item');
itemBlock.initSvg();
connection.connect(itemBlock.previousConnection);
connection = itemBlock.nextConnection;
var itemBlock = workspace.newBlock('generalkey_create_with_item');
itemBlock.initSvg();
connection.connect(itemBlock.previousConnection);
connection = itemBlock.nextConnection;
}
return containerBlock;
},
/**
* Reconfigure this block based on the mutator dialog's components.
* @param {!Blockly.Block} containerBlock Root block in mutator.
* @this Blockly.Block
*/
compose: function(containerBlock) {
/**
* Reconfigure this block based on the mutator dialog's components.
* @param {!Blockly.Block} containerBlock Root block in mutator.
* @this Blockly.Block
*/
compose: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
// Count number of inputs.
var connections = [];
var i = 0;
while (itemBlock) {
connections[i] = itemBlock.valueConnection_;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
i++;
connections[i] = itemBlock.valueConnection_;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
i++;
}
this.itemCount_ = i;
this.updateShape_();
// Reconnect any child blocks.
for (var i = 0; i < this.itemCount_; i++) {
if (connections[i]) {
this.getInput('ADD' + i).connection.connect(connections[i]);
}
if (connections[i]) {
this.getInput('ADD' + i).connection.connect(connections[i]);
}
}
},
/**
* Store pointers to any connected child blocks.
* @param {!Blockly.Block} containerBlock Root block in mutator.
* @this Blockly.Block
*/
saveConnections: function(containerBlock) {
/**
* Store pointers to any connected child blocks.
* @param {!Blockly.Block} containerBlock Root block in mutator.
* @this Blockly.Block
*/
saveConnections: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
var i = 0;
while (itemBlock) {
var input = this.getInput('ADD' + i);
itemBlock.valueConnection_ = input && input.connection.targetConnection;
i++;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
var input = this.getInput('ADD' + i);
itemBlock.valueConnection_ = input && input.connection.targetConnection;
i++;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
}
},
/**
* Modify this block to have the correct number of inputs.
* @private
* @this Blockly.Block
*/
updateShape_: function() {
/**
* Modify this block to have the correct number of inputs.
* @private
* @this Blockly.Block
*/
updateShape_: function () {
// Delete everything.
if (this.getInput('EMPTY')) {
this.removeInput('EMPTY');
this.removeInput('EMPTY');
} else {
var i = 0;
while (this.getInput('ADD' + i)) {
this.removeInput('ADD' + i);
i++;
}
var i = 0;
while (this.getInput('ADD' + i)) {
this.removeInput('ADD' + i);
i++;
}
}
// Rebuild block.
if (this.itemCount_ == 0) {
this.appendDummyInput('EMPTY')
.appendField(Blockly.Msg.GENERALKEY_CREATE_EMPTY_TITLE);
this.appendDummyInput('EMPTY')
.appendField(Blockly.Msg.GENERALKEY_CREATE_EMPTY_TITLE);
} else {
for (var i = 0; i < this.itemCount_; i++) {
var input = this.appendValueInput('ADD' + i);
if (i == 0) {
input.appendField(Blockly.Msg.GENERALKEY_CREATE_WITH_INPUT_WITH);
for (var i = 0; i < this.itemCount_; i++) {
var input = this.appendValueInput('ADD' + i);
if (i == 0) {
input.appendField(Blockly.Msg.GENERALKEY_CREATE_WITH_INPUT_WITH);
}
}
}
}
},
getVars: function() {
getVars: function () {
return [this.getFieldValue('VAR')];
},
renameVar: function(oldName, newName) {
renameVar: function (oldName, newName) {
if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {
this.setTitleValue(newName, 'VAR');
this.setTitleValue(newName, 'VAR');
}
}
};
export const generalkey_container = {
/**
* Mutator block for list container.
* @this Blockly.Block
*/
init: function() {
this.setColour(ACTUATOR_EXTERN_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GENERAL_KEY);
this.appendStatementInput('STACK');
this.setTooltip(Blockly.Msg.GENERALKEY_CONTAINER_TOOLTIP);
this.contextMenu = false;
}
/**
* Mutator block for list container.
* @this Blockly.Block
*/
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GENERAL_KEY);
this.appendStatementInput('STACK');
this.setTooltip(Blockly.Msg.GENERALKEY_CONTAINER_TOOLTIP);
this.contextMenu = false;
}
};
export const generalkey_create_with_item = {
/**
* Mutator bolck for adding items.
* @this Blockly.Block
*/
init: function() {
this.setColour(ACTUATOR_EXTERN_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);
this.contextMenu = false;
}
export const generalkey_create_with_item = {
/**
* Mutator bolck for adding items.
* @this Blockly.Block
*/
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);
this.contextMenu = false;
}
};
export const analog_mouse_input = {
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.ANALOG+Blockly.Msg.MIXLY_MOUSE_INPUT);
.appendField(Blockly.Msg.ANALOG + Blockly.Msg.MIXLY_MOUSE_INPUT);
this.appendValueInput('key');
this.appendValueInput('x')
.appendField(Blockly.Msg.MIXLY_X_CHANGES);
@@ -1318,7 +1318,7 @@ export const analog_mouse_input = {
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MICROPYTHON_DISPLAY_YES, "True"],
[Blockly.Msg.MICROPYTHON_DISPLAY_NO, "False"]
]),'release');
]), 'release');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -1332,7 +1332,7 @@ export const mouse_key = {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MOUSE_KEYS)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_SPECIAL_KEY0,"0x00"],
[Blockly.Msg.MIXLY_SPECIAL_KEY0, "0x00"],
[Blockly.Msg.MIXLY_MOUSE_LEFT_KEY, "0x01"],
[Blockly.Msg.MIXLY_MOUSE_RIGHT_KEY, "0x02"],
[Blockly.Msg.MIXLY_MOUSE_MID_KEY, "0x04"]
@@ -1342,10 +1342,10 @@ export const mouse_key = {
};
export const analog_keyboard_str = {
init:function(){
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.ANALOG+Blockly.Msg.MIXLY_KEYBOARD_INPUT);
.appendField(Blockly.Msg.ANALOG + Blockly.Msg.MIXLY_KEYBOARD_INPUT);
this.appendValueInput('str')
.appendField(Blockly.Msg.MIXLY_STR_PRINT);
this.appendValueInput('time')
@@ -1356,4 +1356,4 @@ export const analog_keyboard_str = {
this.setNextStatement(true);
this.setInputsInline(true);
}
}
};

View File

@@ -334,17 +334,17 @@ export const controls_if = {
var elseStatementConnection = null;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_if_elseif':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_if_else':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
case 'controls_if_elseif':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_if_else':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -365,22 +365,22 @@ export const controls_if = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_if_elseif':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
case 'controls_if_elseif':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
inputIf && inputIf.connection.targetConnection;
clauseBlock.statementConnection_ =
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
case 'controls_if_else':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
i++;
break;
case 'controls_if_else':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
break;
default:
throw 'Unknown block type.';
break;
default:
throw 'Unknown block type.';
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();

View File

@@ -1456,17 +1456,17 @@ export const onboard_tft_display_shape_circle = {
};
export const draw_pointer = {
init: function() {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.DRAW_POINTER)
.appendField(Blockly.Msg.DRAW_POINTER_ANGLE);
this.appendValueInput('angle');
this.appendDummyInput()
.appendField('°');
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.DRAW_POINTER_TOOLTIP);
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.DRAW_POINTER)
.appendField(Blockly.Msg.DRAW_POINTER_ANGLE);
this.appendValueInput('angle');
this.appendDummyInput()
.appendField('°');
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.DRAW_POINTER_TOOLTIP);
}
};
};

View File

@@ -516,58 +516,58 @@ export const ntptime_address = {
const COMMUNICATE_HUE = '#3288dd';
export const requests_get2 = {
init: function() {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput("URL")
.appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)
.setCheck(String);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_CONDUCT)
.appendField(new Blockly.FieldDropdown([["get", "get"], ["head", "head"], ["delete", "delete"]]), 'TYPE')
.appendField(Blockly.Msg.blockpy_REQUESTS)
.appendField(Blockly.Msg.MIXPY_REQUESTS_GET_RESULT)
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip("");
},
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput("URL")
.appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)
.setCheck(String);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_CONDUCT)
.appendField(new Blockly.FieldDropdown([["get", "get"], ["head", "head"], ["delete", "delete"]]), 'TYPE')
.appendField(Blockly.Msg.blockpy_REQUESTS)
.appendField(Blockly.Msg.MIXPY_REQUESTS_GET_RESULT)
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip("");
},
};
export const requests_post = {
init: function() {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput("URL")
.appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)
.setCheck(String);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_CONDUCT)
.appendField(new Blockly.FieldDropdown([["post", "post"], ["put", "put"], ["patch", "patch"]]), 'TYPE')
.appendField(Blockly.Msg.blockpy_REQUESTS)
this.appendValueInput("data")
.appendField(Blockly.Msg.blockpy_REQUESTS+Blockly.Msg.OLED_STRING)
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXPY_REQUESTS_GET_RESULT)
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip("");
},
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput("URL")
.appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)
.setCheck(String);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_CONDUCT)
.appendField(new Blockly.FieldDropdown([["post", "post"], ["put", "put"], ["patch", "patch"]]), 'TYPE')
.appendField(Blockly.Msg.blockpy_REQUESTS)
this.appendValueInput("data")
.appendField(Blockly.Msg.blockpy_REQUESTS + Blockly.Msg.OLED_STRING)
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXPY_REQUESTS_GET_RESULT)
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip("");
},
};
export const requests_attribute2 = {
init: function() {
this.appendValueInput('VAL')
init: function () {
this.appendValueInput('VAL')
var attr =
[[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_JSON,'json()'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content']
,[Blockly.Msg.MIXPY_TEXT_ENCODE, 'encoding']];
this.setColour(COMMUNICATE_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)
.appendField(new Blockly.FieldDropdown(attr), 'ATTR')
this.setInputsInline(true);
this.setOutput(true, String);
}
var attr = [
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_JSON, 'json()'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'],
[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content'],
[Blockly.Msg.MIXPY_TEXT_ENCODE, 'encoding']
];
this.setColour(COMMUNICATE_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)
.appendField(new Blockly.FieldDropdown(attr), 'ATTR')
this.setInputsInline(true);
this.setOutput(true, String);
}
};

View File

@@ -450,7 +450,7 @@ export const analog_keyboard_input = function (_, generator) {
var ge = generator.valueToCode(this, 'general', generator.ORDER_ATOMIC);
var re = this.getFieldValue('release');
generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';
var code = "onboard_bot.hid_keyboard("+sp+","+ge+","+re+")\n";
var code = "onboard_bot.hid_keyboard(" + sp + "," + ge + "," + re + ")\n";
return code;
}
@@ -472,7 +472,7 @@ export const analog_mouse_input = function (_, generator) {
var wheel = generator.valueToCode(this, 'wheel', generator.ORDER_ATOMIC);
var re = this.getFieldValue('release');
generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';
var code = "hid_mouse(keys="+key+",move=("+x+","+y+"),wheel="+wheel+",release="+re+")\n";
var code = "hid_mouse(keys=" + key + ",move=(" + x + "," + y + "),wheel=" + wheel + ",release=" + re + ")\n";
return code;
}
@@ -486,24 +486,23 @@ export const analog_keyboard_str = function (_, generator) {
var str = generator.valueToCode(this, 'str', generator.ORDER_ATOMIC);
var t = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);
generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';
var code = "onboard_bot.hid_keyboard_str("+str+",delay="+t+")\n";
var code = "onboard_bot.hid_keyboard_str(" + str + ",delay=" + t + ")\n";
return code;
}
export const general_key_tuple = function(_, generator) {
export const general_key_tuple = function (_, generator) {
// Create a list with any number of elements of any type.
var dropdown_type = this.getFieldValue('TYPE');
var code = new Array(this.itemCount_);
var default_value = '0';
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || default_value;
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || default_value;
}
if (this.itemCount_!=1){
var code = '(' + code.join(', ') + ')';}
else {
var code = '(' + code.join(', ') + ',)';}
if (this.itemCount_ != 1) {
var code = '(' + code.join(', ') + ')';
} else {
var code = '(' + code.join(', ') + ',)';
}
return [code, generator.ORDER_ATOMIC];
};
};

View File

@@ -4,8 +4,7 @@ export const ce_go_light_number = function (_, generator) {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me" || version == "mixgo_cc") {
generator.definitions_['import_me_go_car'] = 'from me_go import car';
}
else if (version == "mixgo_ce") {
} else if (version == "mixgo_ce") {
generator.definitions_['import_ce_go_car'] = 'from ce_go import car';
}
var code = 'car.' + this.getFieldValue('op');

View File

@@ -7,8 +7,7 @@ export const base_setup = function (_, generator) {
if (branch) {
if (branch.endsWith('\n')) {
generator.setups_['setup_setup'] = branch;
}
else {
} else {
generator.setups_['setup_setup'] = branch + '\n';
}
}
@@ -83,10 +82,10 @@ export const controls_whileUntil = function (a, generator) {
// ok
export const controls_flow_statements = function (a) {
switch (a.getFieldValue("FLOW")) {
case "BREAK":
return "break\n";
case "CONTINUE":
return "continue\n"
case "BREAK":
return "break\n";
case "CONTINUE":
return "continue\n"
}
throw "Unknown flow statement.";
}

View File

@@ -284,12 +284,12 @@ export const display_rect = function (_, generator) {
var size = this.getFieldValue('OP');
var code = '';
switch (checkbox_fill) {
case "True":
code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
break;
case "False":
code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
break;
case "True":
code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
break;
case "False":
code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
break;
}
return code;
}
@@ -407,12 +407,12 @@ export const display_circle = function (_, generator) {
var size = this.getFieldValue('OP');
var code = '';
switch (checkbox_fill) {
case "True":
code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
break;
case "False":
code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
break;
case "True":
code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
break;
case "False":
code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
break;
}
return code;
}
@@ -431,12 +431,12 @@ export const display_triangle = function (_, generator) {
var size = this.getFieldValue('OP');
var code = '';
switch (checkbox_fill) {
case "True":
code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
break;
case "False":
code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
break;
case "True":
code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
break;
case "False":
code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
break;
}
return code;
}

View File

@@ -185,12 +185,12 @@ export const display_rect = function (_, generator) {
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
return code;
case "False":
var code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
return code;
case "True":
var code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
return code;
case "False":
var code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n';
return code;
}
}
@@ -252,12 +252,12 @@ export const display_circle = function (_, generator) {
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
case "True":
var code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
}
}
@@ -274,12 +274,12 @@ export const display_triangle = function (_, generator) {
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
case "True":
var code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
}
}

View File

@@ -230,30 +230,30 @@ export const ntptime_address = function (_, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const requests_get2 = function(_, generator) {
export const requests_get2 = function (_, generator) {
generator.definitions_['import_urequests'] = "import urequests";
var dropdown_type = this.getFieldValue('TYPE');
var str =generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC) ;
var code= 'urequests.'+dropdown_type+'(' + str + ')';
return [code,generator.ORDER_ATOMIC];
};
export const requests_attribute2 = function(_, generator) {
var str = generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC);
var code = 'urequests.' + dropdown_type + '(' + str + ')';
return [code, generator.ORDER_ATOMIC];
};
export const requests_attribute2 = function (_, generator) {
generator.definitions_['import_urequests'] = "import urequests";
var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0';
var attr = this.getFieldValue('ATTR');
var code=varName+"." + attr;
return [code,generator.ORDER_ATOMIC];
};
export const requests_post = function(_, generator) {
var code = varName + "." + attr;
return [code, generator.ORDER_ATOMIC];
};
export const requests_post = function (_, generator) {
generator.definitions_['import_urequests'] = "import urequests";
var dropdown_type = this.getFieldValue('TYPE');
var str = generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC) ;
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC) ;
var code= 'urequests.'+dropdown_type+'(' + str +',data='+data+ ')';
return [code,generator.ORDER_ATOMIC];
};
var dropdown_type = this.getFieldValue('TYPE');
var str = generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var code = 'urequests.' + dropdown_type + '(' + str + ',data=' + data + ')';
return [code, generator.ORDER_ATOMIC];
};

View File

@@ -221,7 +221,7 @@ export const sensor_hp203 = function (_, generator) {
generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';
generator.definitions_['import_spl06_001'] = 'import spl06_001';
generator.definitions_['import_onboard_bps'] = 'onboard_bps = spl06_001.SPL06(onboard_i2c)';
} else{
} else {
generator.definitions_['import_' + version + '_onboard_bps'] = "from " + version + " import onboard_bps";
}
var code = 'onboard_bps.' + key;
@@ -233,7 +233,7 @@ export const sensor_aht11 = function (_, generator) {
var key = this.getFieldValue('key');
if (version == 'mixgo_nova' || version == 'mixgo_zero') {
generator.definitions_['import_' + version + '_onboard_ths'] = "from " + version + " import onboard_ths";
} else if(version == 'mixgo_mini') {
} else if (version == 'mixgo_mini') {
generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';
generator.definitions_['import_shtc3'] = 'import shtc3';
generator.definitions_['import_onboard_ths'] = 'onboard_ths = shtc3.SHTC3(onboard_i2c)';
@@ -570,24 +570,24 @@ export const sensor_mixgo_cc_mmc5603_get_magnetic = function (_, generator) {
if (version == 'mpython') {
generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic';
if (key == 'all') {
var code = 'magnetic.getstrength()';
}else{
var code = 'magnetic.getstrength()';
} else {
var code = 'magnetic.getdata()' + key;
}
} else if(version == 'mixgo_mini') {
} else if (version == 'mixgo_mini') {
generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';
generator.definitions_['import_mmc5603'] = 'import mmc5603';
generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
generator.definitions_['import_onboard_mgs'] = 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
if (key == 'all') {
var code = 'onboard_mgs.getstrength()';
}else{
var code = 'onboard_mgs.getstrength()';
} else {
var code = 'onboard_mgs.getdata()' + key;
}
} else {
generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs";
if (key == 'all') {
var code = 'onboard_mgs.getstrength()';
}else{
var code = 'onboard_mgs.getstrength()';
} else {
var code = 'onboard_mgs.getdata()' + key;
}
}
@@ -599,10 +599,10 @@ export const sensor_mixgo_cc_mmc5603_get_angle = function (_, generator) {
if (version == 'mpython') {
generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic';
var code = 'magnetic.getangle()';
} else if(version == 'mixgo_mini') {
} else if (version == 'mixgo_mini') {
generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';
generator.definitions_['import_mmc5603'] = 'import mmc5603';
generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
generator.definitions_['import_onboard_mgs'] = 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
} else {
generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs";
}
@@ -612,11 +612,11 @@ export const sensor_mixgo_cc_mmc5603_get_angle = function (_, generator) {
export const sensor_mixgo_cc_mmc5603_calibrate_compass = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
if(version == 'mixgo_mini') {
if (version == 'mixgo_mini') {
generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';
generator.definitions_['import_mmc5603'] = 'import mmc5603';
generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
} else{
generator.definitions_['import_onboard_mgs'] = 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';
} else {
generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs";
}
var code = 'onboard_mgs.calibrate()\n';

View File

@@ -63,12 +63,12 @@ export const controls_millis = function (_, generator) {
generator.definitions_['import_time'] = 'import time';
var dropdown_time = this.getFieldValue('Time');
switch (dropdown_time) {
case "ms":
var code = 'time.ticks_ms()';
return [code, generator.ORDER_ATOMIC];
case "us":
var code = 'time.ticks_us()';
return [code, generator.ORDER_ATOMIC];
case "ms":
var code = 'time.ticks_ms()';
return [code, generator.ORDER_ATOMIC];
case "us":
var code = 'time.ticks_us()';
return [code, generator.ORDER_ATOMIC];
}
}
@@ -94,15 +94,15 @@ export const controls_delay = function (_, generator) {
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'
var dropdown_time = this.getFieldValue('Time');
switch (dropdown_time) {
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
}
}
@@ -112,15 +112,15 @@ export const controls_delay_new = function (_, generator) {
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'
var dropdown_time = this.getFieldValue('Time');
switch (dropdown_time) {
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython",
"version": "1.3.0",
"version": "1.4.0",
"description": "适用于mixly的micropython模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-esp32",
"version": "1.3.0",
"version": "1.4.0",
"description": "适用于mixly的micropython esp32模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-esp32c2",
"version": "1.4.0",
"version": "1.5.0",
"description": "适用于mixly的micropython esp32c2模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-esp32c3",
"version": "1.3.0",
"version": "1.4.0",
"description": "适用于mixly的micropython esp32c3模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-esp32s2",
"version": "1.5.0",
"version": "1.6.0",
"description": "适用于mixly的micropython esp32s2模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-esp32s3",
"version": "1.3.0",
"version": "1.4.0",
"description": "适用于mixly的micropython esp32s3模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -64,13 +64,13 @@ export const math_selfcalcu = function (_, generator) {
var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0';
var operator = this.getFieldValue('OP');
switch (operator) {
case 'ADD': var op = '+='; break;
case 'MINUS': var op = '-='; break;
case 'MULTIPLY': var op = '*='; break;
case 'DIVIDE': var op = '/='; break;
case 'QUYU': var op = '%='; break;
case 'ZHENGCHU': var op = '//='; break;
case 'POWER': var op = '**='; break;
case 'ADD': var op = '+='; break;
case 'MINUS': var op = '-='; break;
case 'MULTIPLY': var op = '*='; break;
case 'DIVIDE': var op = '/='; break;
case 'QUYU': var op = '%='; break;
case 'ZHENGCHU': var op = '//='; break;
case 'POWER': var op = '**='; break;
}
var code = argument0 + ' ' + op + ' ' + argument1 + '\n';
return code;
@@ -84,66 +84,66 @@ export const math_single = function (a, generator) {
generator.definitions_['import_math'] = "import math";
a = "SIN" == b || "COS" == b || "TAN" == b ? generator.valueToCode(a, "NUM", generator.ORDER_MULTIPLICATIVE) || "0" : generator.valueToCode(a, "NUM", generator.ORDER_NONE) || "0";
switch (b) {
case "ABS":
c = "math.fabs(" + a + ")";
break;
case "ROOT":
c = "math.sqrt(" +
case "ABS":
c = "math.fabs(" + a + ")";
break;
case "ROOT":
c = "math.sqrt(" +
a + ")";
break;
case "LN":
c = "math.log(" + a + ")";
break;
case "LOG10":
c = "math.log10(" + a + ")";
break;
case "EXP":
c = "math.exp(" + a + ")";
break;
case "POW10":
c = "math.pow(10," + a + ")";
break;
case "ROUND":
c = "round(" + a + ")";
break;
case "ROUNDUP":
c = "math.ceil(" + a + ")";
break;
case "ROUNDDOWN":
c = "math.floor(" + a + ")";
break;
case "SIN":
c = "math.sin(" + a + ")";
break;
case "COS":
c = "math.cos(" + a + ")";
break;
case "TAN":
c = "math.tan(" + a + ")";
break;
case "++":
c = "++(" + a + ")";
break;
case "--":
c = "--(" + a + ")";
break;
case "-":
c = "-(" + a + ")";
break;
default:
break;
case "LN":
c = "math.log(" + a + ")";
break;
case "LOG10":
c = "math.log10(" + a + ")";
break;
case "EXP":
c = "math.exp(" + a + ")";
break;
case "POW10":
c = "math.pow(10," + a + ")";
break;
case "ROUND":
c = "round(" + a + ")";
break;
case "ROUNDUP":
c = "math.ceil(" + a + ")";
break;
case "ROUNDDOWN":
c = "math.floor(" + a + ")";
break;
case "SIN":
c = "math.sin(" + a + ")";
break;
case "COS":
c = "math.cos(" + a + ")";
break;
case "TAN":
c = "math.tan(" + a + ")";
break;
case "++":
c = "++(" + a + ")";
break;
case "--":
c = "--(" + a + ")";
break;
case "-":
c = "-(" + a + ")";
break;
default:
}
if (c)
return [c, generator.ORDER_FUNCTION_CALL];
switch (b) {
case "ASIN":
c = "math.degrees(math.asin(" + a + "))";
break;
case "ACOS":
c = "math.degrees(math.acos(" + a + "))";
break;
case "ATAN":
c = "math.degrees(math.atan(" + a + "))";
break;
case "ASIN":
c = "math.degrees(math.asin(" + a + "))";
break;
case "ACOS":
c = "math.degrees(math.acos(" + a + "))";
break;
case "ATAN":
c = "math.degrees(math.atan(" + a + "))";
break;
}
return [c, generator.ORDER_MULTIPLICATIVE]
}

View File

@@ -64,12 +64,12 @@ export const controls_millis = function (_, generator) {
generator.definitions_['import_time'] = 'import time';
var dropdown_time = this.getFieldValue('Time');
switch (dropdown_time) {
case "ms":
var code = 'time.ticks_ms()';
return [code, generator.ORDER_ATOMIC];
case "us":
var code = 'time.ticks_us()';
return [code, generator.ORDER_ATOMIC];
case "ms":
var code = 'time.ticks_ms()';
return [code, generator.ORDER_ATOMIC];
case "us":
var code = 'time.ticks_us()';
return [code, generator.ORDER_ATOMIC];
}
}
@@ -108,15 +108,15 @@ export const controls_delay = function (_, generator) {
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'
var dropdown_time = this.getFieldValue('Time');
switch (dropdown_time) {
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
case "s":
var code = 'time.sleep(' + delay_time + ')\n';
return code;
case "ms":
var code = 'time.sleep_ms(' + delay_time + ')\n';
return code;
case "us":
var code = 'time.sleep_us(' + delay_time + ')\n';
return code;
}
}

View File

@@ -210,34 +210,34 @@ export const RTC_get_time = function (_, generator) {
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
switch (timeType) {
//
case "Year":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Month":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Day":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Hour":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Minute":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Second":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Week":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix1":
var code = 'ds.get_date()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix2":
var code = 'ds.get_time()';
return [code, generator.ORDER_ASSIGNMENT];
//
case "Year":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Month":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Day":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Hour":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Minute":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Second":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Week":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix1":
var code = 'ds.get_date()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix2":
var code = 'ds.get_time()';
return [code, generator.ORDER_ASSIGNMENT];
}
}

View File

@@ -208,34 +208,34 @@ export const RTC_get_time = function (_, generator) {
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
switch (timeType) {
//
case "Year":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Month":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Day":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Hour":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Minute":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Second":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Week":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix1":
var code = 'ds.get_date()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix2":
var code = 'ds.get_time()';
return [code, generator.ORDER_ASSIGNMENT];
//
case "Year":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Month":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Day":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Hour":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Minute":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Second":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Week":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix1":
var code = 'ds.get_date()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix2":
var code = 'ds.get_time()';
return [code, generator.ORDER_ASSIGNMENT];
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/micropython-robot",
"version": "1.2.0",
"version": "1.3.0",
"description": "适用于mixly的micropython robot模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -208,17 +208,17 @@ export const controls_if = {
var elseStatementConnection = null;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_if_elseif':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_if_else':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
case 'controls_if_elseif':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_if_else':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -239,22 +239,22 @@ export const controls_if = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_if_elseif':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
case 'controls_if_elseif':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
inputIf && inputIf.connection.targetConnection;
clauseBlock.statementConnection_ =
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
case 'controls_if_else':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
i++;
break;
case 'controls_if_else':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
break;
default:
throw 'Unknown block type.';
break;
default:
throw 'Unknown block type.';
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -544,17 +544,17 @@ export const controls_try_finally = {
var elseStatementConnection = null;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_except':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_finally':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
case 'controls_except':
this.elseifCount_++;
valueConnections.push(clauseBlock.valueConnection_);
statementConnections.push(clauseBlock.statementConnection_);
break;
case 'controls_finally':
this.elseCount_++;
elseStatementConnection = clauseBlock.statementConnection_;
break;
default:
throw Error('Unknown block type: ' + clauseBlock.type);
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -575,22 +575,22 @@ export const controls_try_finally = {
var i = 1;
while (clauseBlock) {
switch (clauseBlock.type) {
case 'controls_except':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
case 'controls_except':
var inputIf = this.getInput('IF' + i);
var inputDo = this.getInput('DO' + i);
clauseBlock.valueConnection_ =
inputIf && inputIf.connection.targetConnection;
clauseBlock.statementConnection_ =
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
i++;
break;
case 'controls_finally':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
i++;
break;
case 'controls_finally':
var inputDo = this.getInput('ELSE');
clauseBlock.statementConnection_ =
inputDo && inputDo.connection.targetConnection;
break;
default:
throw 'Unknown block type.';
break;
default:
throw 'Unknown block type.';
}
clauseBlock = clauseBlock.nextConnection &&
clauseBlock.nextConnection.targetBlock();
@@ -794,15 +794,17 @@ export const controls_for_range = {
};
controls_whileUntil.OPERATORS =
[[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'],
[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL']];
controls_whileUntil.OPERATORS = [
[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'],
[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL']
];
controls_flow_statements.OPERATORS =
[[Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'],
[Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE']];
controls_flow_statements.OPERATORS = [
[Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'],
[Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE']
];
@@ -1022,7 +1024,7 @@ export const get_unique_identifier = {
init: function () {
this.setColour(LOOPS_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DEVICE +'ID');
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DEVICE + 'ID');
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_GET_UNIQUE_IDEN);

View File

@@ -442,12 +442,12 @@ export const dicts_add_change_del = {
var e = b.getFieldValue("WHERE"),
d = "";
switch (e) {
case "INSERT":
d = Blockly.Msg.DICTS_ADD_TOOLTIP;
break;
case "DELETE":
d = Blockly.Msg.DICTS_DELETE_TOOLTIP;
break;
case "INSERT":
d = Blockly.Msg.DICTS_ADD_TOOLTIP;
break;
case "DELETE":
d = Blockly.Msg.DICTS_DELETE_TOOLTIP;
break;
}
//if ("FROM_START" == e || "FROM_END" == e) d += " " + Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1", ONE_BASED_INDEXING ? "#1": "#0");
return d

View File

@@ -194,20 +194,20 @@ export const text_char_at2 = {
e = b.getFieldValue("WHERE"),
d = "";
switch (a + " " + e) {
case "GET FROM_START":
case "GET FROM_END":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;
break;
case "GET RANDOM":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;
break;
case "GET_REMOVE FROM_START":
case "GET_REMOVE FROM_END":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;
break;
case "GET_REMOVE RANDOM":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;
break;
case "GET FROM_START":
case "GET FROM_END":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;
break;
case "GET RANDOM":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;
break;
case "GET_REMOVE FROM_START":
case "GET_REMOVE FROM_END":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;
break;
case "GET_REMOVE RANDOM":
d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;
break;
}
if ("FROM_START" == e || "FROM_END" == e) d += " " + Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1", Blockly.Msg.ONE_BASED_INDEXING ? "#1" : "#0");
return d
@@ -296,14 +296,16 @@ export const text_substring2 = {
* @this Blockly.Block
*/
init: function () {
this['WHERE_OPTIONS_1'] =
[[Blockly.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'],
[Blockly.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'],
[Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST']];
this['WHERE_OPTIONS_2'] =
[[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'],
[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'],
[Blockly.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST']];
this['WHERE_OPTIONS_1'] = [
[Blockly.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'],
[Blockly.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'],
[Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST']
];
this['WHERE_OPTIONS_2'] = [
[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'],
[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'],
[Blockly.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST']
];
this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);
this.setColour(TEXTS_HUE);
this.appendValueInput("VAR")
@@ -423,10 +425,11 @@ export const text_substring = {
export const text_equals_starts_ends = {
init: function () {
var TEXT_DOWHAT =
[[Blockly.Msg.MIXLY_EQUALS, '==='],
[Blockly.Msg.MIXLY_STARTSWITH, 'startswith'],
[Blockly.Msg.MIXLY_ENDSWITH, 'endswith']];
var TEXT_DOWHAT = [
[Blockly.Msg.MIXLY_EQUALS, '==='],
[Blockly.Msg.MIXLY_STARTSWITH, 'startswith'],
[Blockly.Msg.MIXLY_ENDSWITH, 'endswith']
];
this.setColour(TEXTS_HUE);
this.appendValueInput("STR1")
.setCheck(String);
@@ -454,9 +457,13 @@ export const text_compare_to = {
export const text_capital = {
init: function () {
var TEXT_CAPITAL =
[[Blockly.Msg.TEXT_UPPER, 'upper'], [Blockly.Msg.TEXT_TITLE, 'title'], [Blockly.Msg.TEXT_CAPITALIZE, 'capitalize'], [Blockly.Msg.TEXT_SWAPCASE, 'swapcase'],
[Blockly.Msg.TEXT_LOWER, 'lower']];
var TEXT_CAPITAL = [
[Blockly.Msg.TEXT_UPPER, 'upper'],
[Blockly.Msg.TEXT_TITLE, 'title'],
[Blockly.Msg.TEXT_CAPITALIZE, 'capitalize'],
[Blockly.Msg.TEXT_SWAPCASE, 'swapcase'],
[Blockly.Msg.TEXT_LOWER, 'lower']
];
this.setColour(TEXTS_HUE);
this.appendValueInput("VAR")
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)
@@ -480,10 +487,11 @@ export const text_capital = {
export const text_center = {
init: function () {
var TEXT_CENTER =
[[Blockly.Msg.TEXT_LJUST, 'ljust'],
[Blockly.Msg.TEXT_CENTER, 'center'],
[Blockly.Msg.TEXT_RJUST, 'rjust']];
var TEXT_CENTER = [
[Blockly.Msg.TEXT_LJUST, 'ljust'],
[Blockly.Msg.TEXT_CENTER, 'center'],
[Blockly.Msg.TEXT_RJUST, 'rjust']
];
this.setColour(TEXTS_HUE);
this.appendValueInput("VAR")
.appendField(new Blockly.FieldDropdown(TEXT_CENTER), 'CENTER')

View File

@@ -132,10 +132,10 @@ export const controls_whileUntil = function (a, generator) {
//ok
export const controls_flow_statements = function (a) {
switch (a.getFieldValue("FLOW")) {
case "BREAK":
return "break\n";
case "CONTINUE":
return "continue\n"
case "BREAK":
return "break\n";
case "CONTINUE":
return "continue\n"
}
throw "Unknown flow statement.";
}

View File

@@ -129,17 +129,16 @@ export const dicts_add_change_del = function (block, generator) {
// var text=this.getFieldValue('KEY');
switch (mode) {
case 'INSERT':
//var at2 = block.getFieldValue('AT2');
var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ASSIGNMENT) || '0';
var code = dict + "[" + KEY + "] = " + at2 + '\n'
break;
case 'DELETE':
var code = 'del ' + dict + "[" + KEY + "]\n"
break;
default:
throw 'Unhandled option (lists_setIndex2)';
case 'INSERT':
//var at2 = block.getFieldValue('AT2');
var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ASSIGNMENT) || '0';
var code = dict + "[" + KEY + "] = " + at2 + '\n'
break;
case 'DELETE':
var code = 'del ' + dict + "[" + KEY + "]\n"
break;
default:
throw 'Unhandled option (lists_setIndex2)';
}
return code;
}

View File

@@ -150,36 +150,36 @@ export const list_trig = function (a, generator) {
generator.definitions_['import_math'] = "import math";
a = generator.valueToCode(a, 'data', generator.ORDER_NONE)
switch (b) {
case "LEN":
c = "len(" + a + ")";
break;
case "SUM":
c = "sum(" + a + ")";
break;
case "MIN":
c = "min(" + a + ")";
break;
case "MAX":
c = "max(" + a + ")";
break;
case 'AVERAGE':
generator.definitions_['import_mixpy_math_mean'] = "from mixpy import math_mean";
c = 'math_mean(' + a + ')';
break;
case 'MEDIAN':
generator.definitions_['import_mixpy_math_median'] = "from mixpy import math_median";
c = 'math_median(' + a + ')';
break;
case 'MODE':
generator.definitions_['import_mixpy_math_modes'] = "from mixpy import math_modes";
c = 'math_modes(' + a + ')';
break;
case 'STD_DEV':
generator.definitions_['import_mixpy_math_standard_deviation'] = "from mixpy import math_standard_deviation";
c = 'math_standard_deviation(' + a + ')';
break;
default:
throw 'Unknown operator: ' + b;
case "LEN":
c = "len(" + a + ")";
break;
case "SUM":
c = "sum(" + a + ")";
break;
case "MIN":
c = "min(" + a + ")";
break;
case "MAX":
c = "max(" + a + ")";
break;
case 'AVERAGE':
generator.definitions_['import_mixpy_math_mean'] = "from mixpy import math_mean";
c = 'math_mean(' + a + ')';
break;
case 'MEDIAN':
generator.definitions_['import_mixpy_math_median'] = "from mixpy import math_median";
c = 'math_median(' + a + ')';
break;
case 'MODE':
generator.definitions_['import_mixpy_math_modes'] = "from mixpy import math_modes";
c = 'math_modes(' + a + ')';
break;
case 'STD_DEV':
generator.definitions_['import_mixpy_math_standard_deviation'] = "from mixpy import math_standard_deviation";
c = 'math_standard_deviation(' + a + ')';
break;
default:
throw 'Unknown operator: ' + b;
}
if (c)
return [c, generator.ORDER_ATOMIC];

View File

@@ -70,13 +70,13 @@ export const math_selfcalcu = function (_, generator) {
var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0';
var operator = this.getFieldValue('OP');
switch (operator) {
case 'ADD': var op = '+='; break;
case 'MINUS': var op = '-='; break;
case 'MULTIPLY': var op = '*='; break;
case 'DIVIDE': var op = '/='; break;
case 'QUYU': var op = '%='; break;
case 'ZHENGCHU': var op = '//='; break;
case 'POWER': var op = '**='; break;
case 'ADD': var op = '+='; break;
case 'MINUS': var op = '-='; break;
case 'MULTIPLY': var op = '*='; break;
case 'DIVIDE': var op = '/='; break;
case 'QUYU': var op = '%='; break;
case 'ZHENGCHU': var op = '//='; break;
case 'POWER': var op = '**='; break;
}
var code = argument0 + ' ' + op + ' ' + argument1 + '\n';
return code;
@@ -90,66 +90,66 @@ export const math_single = function (a, generator) {
generator.definitions_['import_math'] = "import math";
a = "SIN" == b || "COS" == b || "TAN" == b ? generator.valueToCode(a, "NUM", generator.ORDER_MULTIPLICATIVE) || "0" : generator.valueToCode(a, "NUM", generator.ORDER_NONE) || "0";
switch (b) {
case "ABS":
c = "math.fabs(" + a + ")";
break;
case "ROOT":
c = "math.sqrt(" +
case "ABS":
c = "math.fabs(" + a + ")";
break;
case "ROOT":
c = "math.sqrt(" +
a + ")";
break;
case "LN":
c = "math.log(" + a + ")";
break;
case "LOG10":
c = "math.log10(" + a + ")";
break;
case "EXP":
c = "math.exp(" + a + ")";
break;
case "POW10":
c = "math.pow(10," + a + ")";
break;
case "ROUND":
c = "round(" + a + ")";
break;
case "ROUNDUP":
c = "math.ceil(" + a + ")";
break;
case "ROUNDDOWN":
c = "math.floor(" + a + ")";
break;
case "SIN":
c = "math.sin(" + a + ")";
break;
case "COS":
c = "math.cos(" + a + ")";
break;
case "TAN":
c = "math.tan(" + a + ")";
break;
case "++":
c = "++(" + a + ")";
break;
case "--":
c = "--(" + a + ")";
break;
case "-":
c = "-(" + a + ")";
break;
default:
break;
case "LN":
c = "math.log(" + a + ")";
break;
case "LOG10":
c = "math.log10(" + a + ")";
break;
case "EXP":
c = "math.exp(" + a + ")";
break;
case "POW10":
c = "math.pow(10," + a + ")";
break;
case "ROUND":
c = "round(" + a + ")";
break;
case "ROUNDUP":
c = "math.ceil(" + a + ")";
break;
case "ROUNDDOWN":
c = "math.floor(" + a + ")";
break;
case "SIN":
c = "math.sin(" + a + ")";
break;
case "COS":
c = "math.cos(" + a + ")";
break;
case "TAN":
c = "math.tan(" + a + ")";
break;
case "++":
c = "++(" + a + ")";
break;
case "--":
c = "--(" + a + ")";
break;
case "-":
c = "-(" + a + ")";
break;
default:
}
if (c)
return [c, generator.ORDER_EXPONENTIATION];
switch (b) {
case "ASIN":
c = "math.degrees(math.asin(" + a + "))";
break;
case "ACOS":
c = "math.degrees(math.acos(" + a + "))";
break;
case "ATAN":
c = "math.degrees(math.atan(" + a + "))";
break;
case "ASIN":
c = "math.degrees(math.asin(" + a + "))";
break;
case "ACOS":
c = "math.degrees(math.acos(" + a + "))";
break;
case "ATAN":
c = "math.degrees(math.atan(" + a + "))";
break;
}
return [c, generator.ORDER_MULTIPLICATIVE]
}

View File

@@ -50,15 +50,15 @@ export const text_char_at2 = function (a, generator) {
var c = a.getFieldValue("WHERE") || "FROM_START",
str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
switch (c) {
case "FROM_START":
a = generator.getAdjustedInt(a, "AT");
return [str + "[" + a + "]", generator.ORDER_ATOMIC];
case "FROM_END":
a = generator.getAdjustedInt(a, "AT", 1, !0);
return [str + "[" + a + "]", generator.ORDER_ATOMIC];
case "RANDOM":
generator.definitions_.import_random = "import random";
return ["random.choice(" + str + ")", generator.ORDER_FUNCTION_CALL];
case "FROM_START":
a = generator.getAdjustedInt(a, "AT");
return [str + "[" + a + "]", generator.ORDER_ATOMIC];
case "FROM_END":
a = generator.getAdjustedInt(a, "AT", 1, !0);
return [str + "[" + a + "]", generator.ORDER_ATOMIC];
case "RANDOM":
generator.definitions_.import_random = "import random";
return ["random.choice(" + str + ")", generator.ORDER_FUNCTION_CALL];
}
throw "Unhandled combination (lists_getIndex).";
}
@@ -96,41 +96,41 @@ export const text_substring2 = function (block, generator) {
var where1 = block.getFieldValue('WHERE1');
var where2 = block.getFieldValue('WHERE2');
switch (where1) {
case 'FROM_START':
var at1 = generator.getAdjustedInt(block, 'AT1');
if (at1 == '0') {
at1 = '';
}
break;
case 'FROM_END':
var at1 = generator.getAdjustedInt(block, 'AT1', 0, true);
break;
case 'FIRST':
var at1 = '0';
break;
default:
throw 'Unhandled option (lists_getSublist)';
case 'FROM_START':
var at1 = generator.getAdjustedInt(block, 'AT1');
if (at1 == '0') {
at1 = '';
}
break;
case 'FROM_END':
var at1 = generator.getAdjustedInt(block, 'AT1', 0, true);
break;
case 'FIRST':
var at1 = '0';
break;
default:
throw 'Unhandled option (lists_getSublist)';
}
switch (where2) {
case 'FROM_START':
var at2 = generator.getAdjustedInt(block, 'AT2');
break;
case 'FROM_END':
var at2 = generator.getAdjustedInt(block, 'AT2', 0, true);
// Ensure that if the result calculated is 0 that sub-sequence will
// include all elements as expected.
if (!Blockly.isNumber(String(at2))) {
generator.definitions_['import_sys'] = 'import sys';
at2 += ' or sys.maxsize';
} else if (at2 == '0') {
at2 = '';
}
break;
case 'LAST':
var at2 = '-1';
break;
default:
throw 'Unhandled option (lists_getSublist)';
case 'FROM_START':
var at2 = generator.getAdjustedInt(block, 'AT2');
break;
case 'FROM_END':
var at2 = generator.getAdjustedInt(block, 'AT2', 0, true);
// Ensure that if the result calculated is 0 that sub-sequence will
// include all elements as expected.
if (!Blockly.isNumber(String(at2))) {
generator.definitions_['import_sys'] = 'import sys';
at2 += ' or sys.maxsize';
} else if (at2 == '0') {
at2 = '';
}
break;
case 'LAST':
var at2 = '-1';
break;
default:
throw 'Unhandled option (lists_getSublist)';
}
var code = str + '[' + at1 + ' : ' + at2 + ']';
return [code, generator.ORDER_ATOMIC];

View File

@@ -107,90 +107,90 @@ export const tuple_trig = function (a, generator) {
generator.definitions_['import_math'] = "import math";
a = generator.valueToCode(a, 'data', generator.ORDER_NONE)
switch (b) {
case "LEN":
c = "len(" + a + ")";
break;
case "SUM":
c = "sum(" + a + ")";
break;
case "MIN":
c = "min(" + a + ")";
break;
case "MAX":
c = "max(" + a + ")";
break;
case 'AVERAGE':
// generator.definitions_['from_numbers_import_Number'] =
// 'from numbers import Number';
var functionName = generator.provideFunction_(
'math_mean',
// This operation excludes null and values that aren't int or float:',
// math_mean([null, null, "aString", 1, 9]) == 5.0.',
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',
' localList = [e for e in myList if type(e) == int or type(e) == float]',
' if not localList: return',
' return float(sum(localList)) / len(localList)']);
c = functionName + '(' + a + ')';
break;
case 'MEDIAN':
// generator.definitions_['from_numbers_import_Number'] =
// 'from numbers import Numberd';
var functionName = generator.provideFunction_(
'math_median',
// This operation excludes null values:
// math_median([null, null, 1, 3]) == 2.0.
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',
' localList = sorted([e for e in myList if type(e) == int or type(e) == float])',
' if not localList: return',
' if len(localList) % 2 == 0:',
' return (localList[len(localList) // 2 - 1] + ' +
case "LEN":
c = "len(" + a + ")";
break;
case "SUM":
c = "sum(" + a + ")";
break;
case "MIN":
c = "min(" + a + ")";
break;
case "MAX":
c = "max(" + a + ")";
break;
case 'AVERAGE':
// generator.definitions_['from_numbers_import_Number'] =
// 'from numbers import Number';
var functionName = generator.provideFunction_(
'math_mean',
// This operation excludes null and values that aren't int or float:',
// math_mean([null, null, "aString", 1, 9]) == 5.0.',
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',
' localList = [e for e in myList if type(e) == int or type(e) == float]',
' if not localList: return',
' return float(sum(localList)) / len(localList)']);
c = functionName + '(' + a + ')';
break;
case 'MEDIAN':
// generator.definitions_['from_numbers_import_Number'] =
// 'from numbers import Numberd';
var functionName = generator.provideFunction_(
'math_median',
// This operation excludes null values:
// math_median([null, null, 1, 3]) == 2.0.
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',
' localList = sorted([e for e in myList if type(e) == int or type(e) == float])',
' if not localList: return',
' if len(localList) % 2 == 0:',
' return (localList[len(localList) // 2 - 1] + ' +
'localList[len(localList) // 2]) / 2.0',
' else:',
' return localList[(len(localList) - 1) // 2]']);
c = functionName + '(' + a + ')';
break;
case 'MODE':
var functionName = generator.provideFunction_(
'math_modes',
// As a list of numbers can contain more than one mode,
// the returned result is provided as an array.
// Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(some_list):',
' modes = []',
' # Using a lists of [item, count] to keep count rather than dict',
' # to avoid "unhashable" errors when the counted item is ' +
' else:',
' return localList[(len(localList) - 1) // 2]']);
c = functionName + '(' + a + ')';
break;
case 'MODE':
var functionName = generator.provideFunction_(
'math_modes',
// As a list of numbers can contain more than one mode,
// the returned result is provided as an array.
// Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(some_list):',
' modes = []',
' # Using a lists of [item, count] to keep count rather than dict',
' # to avoid "unhashable" errors when the counted item is ' +
'itself a list or dict.',
' counts = []',
' maxCount = 1',
' for item in some_list:',
' found = False',
' for count in counts:',
' if count[0] == item:',
' count[1] += 1',
' maxCount = max(maxCount, count[1])',
' found = True',
' if not found:',
' counts.append([item, 1])',
' for counted_item, item_count in counts:',
' if item_count == maxCount:',
' modes.append(counted_item)',
' return modes']);
c = functionName + '(' + a + ')';
break;
case 'STD_DEV':
generator.definitions_['import_math'] = 'import math';
var functionName = generator.provideFunction_(
'math_standard_deviation',
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(numbers):',
' n = len(numbers)',
' if n == 0: return',
' mean = float(sum(numbers)) / n',
' variance = sum((x - mean) ** 2 for x in numbers) / n',
' return math.sqrt(variance)']);
c = functionName + '(' + a + ')';
break;
default:
throw 'Unknown operator: ' + b;
' counts = []',
' maxCount = 1',
' for item in some_list:',
' found = False',
' for count in counts:',
' if count[0] == item:',
' count[1] += 1',
' maxCount = max(maxCount, count[1])',
' found = True',
' if not found:',
' counts.append([item, 1])',
' for counted_item, item_count in counts:',
' if item_count == maxCount:',
' modes.append(counted_item)',
' return modes']);
c = functionName + '(' + a + ')';
break;
case 'STD_DEV':
generator.definitions_['import_math'] = 'import math';
var functionName = generator.provideFunction_(
'math_standard_deviation',
['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(numbers):',
' n = len(numbers)',
' if n == 0: return',
' mean = float(sum(numbers)) / n',
' variance = sum((x - mean) ** 2 for x in numbers) / n',
' return math.sqrt(variance)']);
c = functionName + '(' + a + ')';
break;
default:
throw 'Unknown operator: ' + b;
}
if (c)
return [c, generator.ORDER_FUNCTION_CALL];
@@ -204,42 +204,42 @@ export const tuple_getSublist = function (block, generator) {
var where1 = block.getFieldValue('WHERE1');
var where2 = block.getFieldValue('WHERE2');
switch (where1) {
case 'FROM_START':
var at1 = generator.getAdjustedInt(block, 'AT1');
if (at1 == '0') {
at1 = '';
}
break;
case 'FROM_END':
var at1 = generator.getAdjustedInt(block, 'AT1', 1, true);
break;
case 'FIRST':
var at1 = '0';
break;
default:
throw 'Unhandled option (lists_getSublist)';
case 'FROM_START':
var at1 = generator.getAdjustedInt(block, 'AT1');
if (at1 == '0') {
at1 = '';
}
break;
case 'FROM_END':
var at1 = generator.getAdjustedInt(block, 'AT1', 1, true);
break;
case 'FIRST':
var at1 = '0';
break;
default:
throw 'Unhandled option (lists_getSublist)';
}
switch (where2) {
case 'FROM_START':
var at2 = generator.getAdjustedInt(block, 'AT2', 1);
at2 = at2 - 1;
break;
case 'FROM_END':
var at2 = generator.getAdjustedInt(block, 'AT2', 1, true);
// Ensure that if the result calculated is 0 that sub-sequence will
// include all elements as expected.
if (!Blockly.isNumber(String(at2))) {
generator.definitions_['import_sys'] = 'import sys';
at2 += ' or sys.maxsize';
} else if (at2 == '0') {
at2 = '';
}
break;
case 'LAST':
var at2 = '-1';
break;
default:
throw 'Unhandled option (lists_getSublist)';
case 'FROM_START':
var at2 = generator.getAdjustedInt(block, 'AT2', 1);
at2 = at2 - 1;
break;
case 'FROM_END':
var at2 = generator.getAdjustedInt(block, 'AT2', 1, true);
// Ensure that if the result calculated is 0 that sub-sequence will
// include all elements as expected.
if (!Blockly.isNumber(String(at2))) {
generator.definitions_['import_sys'] = 'import sys';
at2 += ' or sys.maxsize';
} else if (at2 == '0') {
at2 = '';
}
break;
case 'LAST':
var at2 = '-1';
break;
default:
throw 'Unhandled option (lists_getSublist)';
}
var code = list + '[' + at1 + ' : ' + at2 + ']';
return [code, generator.ORDER_MEMBER];

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/python",
"version": "1.1.0",
"version": "1.2.0",
"description": "适用于mixly的python模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -13,10 +13,10 @@ export const time_localtime = function (_, generator) {
var op = this.getFieldValue('op');
var code = "time.localtime()[" + op + "]";
switch (op) {
case "all":
var code1 = "time.localtime()";
return [code1, generator.ORDER_ASSIGNMENT];
default:
return [code, generator.ORDER_ASSIGNMENT];
case "all":
var code1 = "time.localtime()";
return [code1, generator.ORDER_ASSIGNMENT];
default:
return [code, generator.ORDER_ASSIGNMENT];
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/python-mixpy",
"version": "1.2.0",
"version": "1.3.0",
"description": "适用于mixly的python mixpy模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -13,10 +13,10 @@ export const time_localtime = function (_, generator) {
var op = this.getFieldValue('op');
var code = "time.localtime()[" + op + "]";
switch (op) {
case "all":
var code1 = "time.localtime()";
return [code1, generator.ORDER_ASSIGNMENT];
default:
return [code, generator.ORDER_ASSIGNMENT];
case "all":
var code1 = "time.localtime()";
return [code1, generator.ORDER_ASSIGNMENT];
default:
return [code, generator.ORDER_ASSIGNMENT];
}
}

View File

@@ -382,103 +382,103 @@ export default class PyEngine {
};
}
switch (value.constructor) {
case Sk.builtin.func:
return {
'name': property,
'type': "Function",
"value": (value.func_code.co_varnames !== undefined ?
" Arguments: " + value.func_code.co_varnames.join(", ") :
' No arguments')
};
case Sk.builtin.module: return null;
case Sk.builtin.str:
return {
'name': property,
'type': "String",
"value": value.$r().v
};
case Sk.builtin.none:
return {
'name': property,
'type': "None",
"value": "None"
};
case Sk.builtin.bool:
return {
'name': property,
'type': "Boolean",
"value": value.$r().v
};
case Sk.builtin.nmber:
return {
'name': property,
'type': "int" == value.skType ? "Integer" : "Float",
"value": value.$r().v
};
case Sk.builtin.int_:
return {
'name': property,
'type': "Integer",
"value": value.$r().v
};
case Sk.builtin.float_:
return {
'name': property,
'type': "Float",
"value": value.$r().v
};
case Sk.builtin.tuple:
return {
'name': property,
'type': "Tuple",
"value": value.$r().v
};
case Sk.builtin.list:
if (value.v.length <= 20) {
case Sk.builtin.func:
return {
'name': property,
'type': "Function",
"value": (value.func_code.co_varnames !== undefined ?
" Arguments: " + value.func_code.co_varnames.join(", ") :
' No arguments')
};
case Sk.builtin.module: return null;
case Sk.builtin.str:
return {
'name': property,
'type': "String",
"value": value.$r().v
};
case Sk.builtin.none:
return {
'name': property,
'type': "None",
"value": "None"
};
case Sk.builtin.bool:
return {
'name': property,
'type': "Boolean",
"value": value.$r().v
};
case Sk.builtin.nmber:
return {
'name': property,
'type': "int" == value.skType ? "Integer" : "Float",
"value": value.$r().v
};
case Sk.builtin.int_:
return {
'name': property,
'type': "Integer",
"value": value.$r().v
};
case Sk.builtin.float_:
return {
'name': property,
'type': "Float",
"value": value.$r().v
};
case Sk.builtin.tuple:
return {
'name': property,
'type': "Tuple",
"value": value.$r().v
};
case Sk.builtin.list:
if (value.v.length <= 20) {
return {
'name': property,
'type': "List",
"value": value.$r().v,
'exact_value': value
};
}
return {
'name': property,
'type': "List",
"value": value.$r().v,
'exact_value': value
"value": "[... " + value.v.length + " elements ...]",
"exact_value": value
};
}
return {
'name': property,
'type': "List",
"value": "[... " + value.v.length + " elements ...]",
"exact_value": value
};
case Sk.builtin.dict:
return {
'name': property,
'type': "Dictionary",
"value": value.$r().v
};
case Number:
return {
'name': property,
'type': value % 1 === 0 ? "Integer" : "Float",
"value": value
};
case String:
return {
'name': property,
'type': "String",
"value": value
};
case Boolean:
return {
'name': property,
'type': "Boolean",
"value": (value ? "True" : "False")
};
default:
return {
'name': property,
'type': value.tp$name == undefined ? value : value.tp$name,
"value": value.$r == undefined ? value : value.$r().v
};
case Sk.builtin.dict:
return {
'name': property,
'type': "Dictionary",
"value": value.$r().v
};
case Number:
return {
'name': property,
'type': value % 1 === 0 ? "Integer" : "Float",
"value": value
};
case String:
return {
'name': property,
'type': "String",
"value": value
};
case Boolean:
return {
'name': property,
'type': "Boolean",
"value": (value ? "True" : "False")
};
default:
return {
'name': property,
'type': value.tp$name == undefined ? value : value.tp$name,
"value": value.$r == undefined ? value : value.$r().v
};
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@mixly/python-skulpt",
"version": "1.2.0",
"version": "1.3.0",
"description": "适用于mixly的python skulpt模块",
"scripts": {
"build:dev": "webpack --config=webpack.dev.js",

View File

@@ -85,18 +85,18 @@ export const is_Related_Path = function (block, generator) {
generator.definitions_.import_blocklygame = "import blocklygame";
var dropdown_Direction = this.getFieldValue('Direction');
switch (dropdown_Direction) {
case 'f':
dropdown_Direction = 0;
break;
case "b":
dropdown_Direction = 2;
break;
case "r":
dropdown_Direction = 1;
break;
case "l":
dropdown_Direction = 3;
break;
case 'f':
dropdown_Direction = 0;
break;
case "b":
dropdown_Direction = 2;
break;
case "r":
dropdown_Direction = 1;
break;
case "l":
dropdown_Direction = 3;
break;
}
var code = 'actor.isPath(' + "(actor.direction+" + dropdown_Direction + ")%4" + ",'block_id=" + block.id + '\')';
return [code, generator.ORDER_ATOMIC];
@@ -183,18 +183,18 @@ export const is_Related_Barrier = function (block, generator) {
generator.definitions_.import_blocklygame = "import blocklygame";
var dropdown_Direction = this.getFieldValue('direction');
switch (dropdown_Direction) {
case 'f':
dropdown_Direction = 0;
break;
case "b":
dropdown_Direction = 2;
break;
case "r":
dropdown_Direction = 1;
break;
case "l":
dropdown_Direction = 3;
break;
case 'f':
dropdown_Direction = 0;
break;
case "b":
dropdown_Direction = 2;
break;
case "r":
dropdown_Direction = 1;
break;
case "l":
dropdown_Direction = 3;
break;
}
var code = 'actor.isBarrier(' + "(actor.direction+" + dropdown_Direction + ")%4" + ",'block_id=" + block.id + '\')';