Skip to content

Commit d51243b

Browse files
committed
add number to sting block
1 parent ee68472 commit d51243b

5 files changed

Lines changed: 72 additions & 15 deletions

File tree

blocks/msg/en.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ Blockly.Msg.WEBDUINO_MATH_SCALE_OMIN = "(origin) min";
1414
Blockly.Msg.WEBDUINO_MATH_SCALE_OMAX = "(origin) max";
1515
Blockly.Msg.WEBDUINO_MATH_SCALE_CMIN = "(conversion) min";
1616
Blockly.Msg.WEBDUINO_MATH_SCALE_CMAX = "(conversion) max";
17+
Blockly.Msg.NUMBER_CONVERT = "convert to";
18+
Blockly.Msg.NUMBER_BINARY = "Binary";
19+
Blockly.Msg.NUMBER_OCTAL = "Octal";
20+
Blockly.Msg.NUMBER_DECTIMAL = "Dectimal";
21+
Blockly.Msg.NUMBER_HEX = "Hexadecimal";
22+
Blockly.Msg.NUMBER_STRING = "string";
1723

1824
// Demo
1925

blocks/msg/zh-hant.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ Blockly.Msg.WEBDUINO_MATH_SCALE_OMIN = "(原始) 最小值";
2020
Blockly.Msg.WEBDUINO_MATH_SCALE_OMAX = "(原始) 最大值";
2121
Blockly.Msg.WEBDUINO_MATH_SCALE_CMIN = "(轉換後) 最小值";
2222
Blockly.Msg.WEBDUINO_MATH_SCALE_CMAX = "(轉換後) 最大值";
23+
Blockly.Msg.NUMBER_CONVERT = "轉換為";
24+
Blockly.Msg.NUMBER_BINARY = "二進位";
25+
Blockly.Msg.NUMBER_OCTAL = "八進位";
26+
Blockly.Msg.NUMBER_DECTIMAL = "十進位";
27+
Blockly.Msg.NUMBER_HEX = "十六進位";
28+
Blockly.Msg.NUMBER_STRING = "字串";
2329

2430
// Demo
2531

blocks/webduino.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,26 @@ Blockly.Blocks['math_value_conversion'] = {
560560
};
561561

562562

563+
Blockly.Blocks['number_to_string'] = {
564+
init: function () {
565+
this.appendValueInput("number_")
566+
.setCheck("Number")
567+
.appendField(Blockly.Msg.NUMBER_CONVERT, "轉換為")
568+
.appendField(new Blockly.FieldDropdown([
569+
[Blockly.Msg.NUMBER_BINARY, "2"],
570+
[Blockly.Msg.NUMBER_OCTAL, "8"],
571+
[Blockly.Msg.NUMBER_DECTIMAL, ""],
572+
[Blockly.Msg.NUMBER_HEX, "16"]
573+
]), "string_")
574+
.appendField(Blockly.Msg.NUMBER_STRING, "字串");
575+
this.setOutput(true);
576+
this.setTooltip('');
577+
this.setColour(160);
578+
this.setHelpUrl('http://www.example.com/');
579+
}
580+
};
581+
582+
563583
/*
564584
o8o
565585
`"'
@@ -811,13 +831,13 @@ Blockly.Blocks['led_callback'] = {
811831

812832

813833
Blockly.Blocks['led_blink'] = {
814-
init: function() {
834+
init: function () {
815835
this.appendValueInput("time_")
816-
.setCheck("String")
817-
.appendField(new Blockly.FieldVariable("led"), "name_")
818-
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "閃爍,閃爍時間");
836+
.setCheck("String")
837+
.appendField(new Blockly.FieldVariable("led"), "name_")
838+
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "閃爍,閃爍時間");
819839
this.appendDummyInput()
820-
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "秒");
840+
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "秒");
821841
this.setPreviousStatement(true);
822842
this.setNextStatement(true);
823843
this.setTooltip('');
@@ -830,11 +850,11 @@ Blockly.Blocks['led_blink'] = {
830850
Blockly.Blocks['led_blink_callback'] = {
831851
init: function () {
832852
this.appendValueInput("time_")
833-
.setCheck("String")
834-
.appendField(new Blockly.FieldVariable("led"), "name_")
835-
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "閃爍,閃爍時間");
853+
.setCheck("String")
854+
.appendField(new Blockly.FieldVariable("led"), "name_")
855+
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "閃爍,閃爍時間");
836856
this.appendDummyInput()
837-
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "秒");
857+
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "秒");
838858
this.appendStatementInput("do_")
839859
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_DO, "每次閃爍執行");
840860
this.setPreviousStatement(true);
@@ -2907,7 +2927,7 @@ Blockly.Blocks['text_indexof'] = {
29072927
.appendField(Blockly.Msg.TEXTLOGIC_INSIDE, "裡面")
29082928
.appendField(new Blockly.FieldDropdown([
29092929
[Blockly.Msg.TEXTLOGIC_HAS, "!=-1"],
2910-
[Blockly.Msg.TEXTLOGIC_NO, "==-1"]
2930+
[Blockly.Msg.TEXTLOGIC_NO, "==-1"]
29112931
]), "state_")
29122932
.appendField(Blockly.Msg.TEXTLOGIC_TEXT, "文字");
29132933
this.setInputsInline(true);

generators/webduino.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,28 @@ Blockly.JavaScript['math_value_conversion'] = function (block) {
336336
var value_cmin_ = Blockly.JavaScript.valueToCode(block, 'cmin_', Blockly.JavaScript.ORDER_ATOMIC);
337337
var value_cmax_ = Blockly.JavaScript.valueToCode(block, 'cmax_', Blockly.JavaScript.ORDER_ATOMIC);
338338
var code = '((' + value_source_ + ' - (' + value_omin_ + ')) * (1/((' + value_omax_ + ')-(' + value_omin_ + ')))) * ((' + value_cmax_ + ')-(' + value_cmin_ + ')) + (' + value_cmin_ + ')';
339-
return [code, Blockly.JavaScript.ORDER_NONE];
339+
return [code, Blockly.JavaScript.ORDER_ATOMIC];
340+
};
341+
342+
343+
Blockly.JavaScript['number_to_string'] = function (block) {
344+
var value_number_ = Blockly.JavaScript.valueToCode(block, 'number_', Blockly.JavaScript.ORDER_ATOMIC);
345+
var dropdown_string_ = block.getFieldValue('string_');
346+
var code = '(' + value_number_ + ').toString(' + dropdown_string_ + ')';
347+
return [code, Blockly.JavaScript.ORDER_ATOMIC];
340348
};
341349

342350

351+
/*
352+
. oooo
353+
.o8 `888
354+
.o888oo oooo d8b .oooo. .ooooo. 888 oooo
355+
888 `888""8P `P )88b d88' `"Y8 888 .8P'
356+
888 888 .oP"888 888 888888.
357+
888 . 888 d8( 888 888 .o8 888 `88b.
358+
"888" d888b `Y888""8o `Y8bod8P' o888o o888o
359+
*/
360+
343361
Blockly.JavaScript['demo_tracking'] = function (block) {
344362
var value_var_ = Blockly.JavaScript.valueToCode(block, 'var_', Blockly.JavaScript.ORDER_ATOMIC);
345363
var dropdown_type_ = block.getFieldValue('type_');
@@ -643,10 +661,10 @@ Blockly.JavaScript['led_toggle'] = function (block) {
643661
return code;
644662
};
645663

646-
Blockly.JavaScript['led_blink'] = function(block) {
664+
Blockly.JavaScript['led_blink'] = function (block) {
647665
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
648666
var value_time_ = Blockly.JavaScript.valueToCode(block, 'time_', Blockly.JavaScript.ORDER_ATOMIC);
649-
var code = variable_name_+'.blink('+value_time_+'*1000);\n';
667+
var code = variable_name_ + '.blink(' + value_time_ + '*1000);\n';
650668
return code;
651669
};
652670

@@ -672,7 +690,7 @@ Blockly.JavaScript['led_blink_callback'] = function (block) {
672690
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
673691
var value_time_ = Blockly.JavaScript.valueToCode(block, 'time_', Blockly.JavaScript.ORDER_ATOMIC);
674692
var statements_do_ = Blockly.JavaScript.statementToCode(block, 'do_');
675-
var code = variable_name_ + '.blink('+value_time_*1000+', function(){\n ' + statements_do_ + '\n});\n';
693+
var code = variable_name_ + '.blink(' + value_time_ * 1000 + ', function(){\n ' + statements_do_ + '\n});\n';
676694
return code;
677695
};
678696

@@ -1899,6 +1917,6 @@ Blockly.JavaScript['text_indexof'] = function (block) {
18991917
var value_input_ = Blockly.JavaScript.valueToCode(block, 'input_', Blockly.JavaScript.ORDER_ATOMIC);
19001918
var dropdown_state_ = block.getFieldValue('state_');
19011919
var value_indexof_ = Blockly.JavaScript.valueToCode(block, 'indexof_', Blockly.JavaScript.ORDER_ATOMIC);
1902-
var code = value_input_+'.indexOf('+value_indexof_+')'+dropdown_state_;
1920+
var code = value_input_ + '.indexOf(' + value_indexof_ + ')' + dropdown_state_;
19031921
return [code, Blockly.JavaScript.ORDER_ATOMIC];
19041922
};

views/index.handlebars

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,13 @@
500500
</block>
501501
</value>
502502
</block>
503+
<block type="number_to_string">
504+
<value name="number_">
505+
<block type="math_number">
506+
<field name="NUM">100</field>
507+
</block>
508+
</value>
509+
</block>
503510
</category>
504511
<category id="catKeyCode">
505512
<block type="document_keyboard"></block>

0 commit comments

Comments
 (0)