Skip to content

Commit 97658c2

Browse files
author
Matthew Matz
committed
Better Regex for preserving floating point in advanced math blocks
1 parent c4c6813 commit 97658c2

File tree

2 files changed

+44
-28
lines changed

2 files changed

+44
-28
lines changed

src/main/webapp/cdn/blockly/generators/propc/base.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,8 +1664,8 @@ Blockly.propc.math_advanced = function () {
16641664
var store = Blockly.propc.variableDB_.getName(this.getFieldValue('STORE'), Blockly.Variables.NAME_TYPE);
16651665
var arg1 = Blockly.propc.valueToCode(this, 'ARG1', Blockly.propc.ORDER_ATOMIC) || '1';
16661666
var arg2 = Blockly.propc.valueToCode(this, 'ARG2', Blockly.propc.ORDER_ATOMIC) || '1';
1667-
arg1 = arg1.replace(/([0-9]) /g, "$1.0 ").replace(/([0-9])\)/g, "$1.0)").replace(/\(int\)/g, "");
1668-
arg2 = arg2.replace(/([0-9]) /g, "$1.0 ").replace(/([0-9])\)/g, "$1.0)").replace(/\(int\)/g, "");
1667+
arg1 = arg1.replace(/([0-9])(\xA0| |\)|$)/g, "$1.0$2").replace(/\(int\)/g, "");
1668+
arg2 = arg2.replace(/([0-9])(\xA0| |\)|$)/g, "$1.0$2").replace(/\(int\)/g, "");
16691669
var operator = this.getFieldValue('OP');
16701670
var opTrig = '';
16711671
if (operator === 'sin' || operator === 'cos' || operator === 'tan')
@@ -1690,8 +1690,10 @@ Blockly.Blocks.math_inv_trig = {
16901690
this.appendValueInput("ARG2")
16911691
.setCheck("Number")
16921692
.appendField("÷");
1693+
this.appendValueInput('ARG3')
1694+
.appendField(") \u00D7");
16931695
this.appendDummyInput()
1694-
.appendField(") store in")
1696+
.appendField("store in")
16951697
.appendField(new Blockly.FieldVariable(Blockly.LANG_VARIABLES_GET_ITEM), 'STORE');
16961698
this.setInputsInline(true);
16971699
this.setPreviousStatement(true, null);
@@ -1711,14 +1713,16 @@ Blockly.propc.math_inv_trig = function () {
17111713
var store = Blockly.propc.variableDB_.getName(this.getFieldValue('STORE'), Blockly.Variables.NAME_TYPE);
17121714
var arg1 = Blockly.propc.valueToCode(this, 'ARG1', Blockly.propc.ORDER_ATOMIC) || '1';
17131715
var arg2 = Blockly.propc.valueToCode(this, 'ARG2', Blockly.propc.ORDER_ATOMIC) || '1';
1714-
arg1 = arg1.replace(/([0-9]) /g, "$1.0 ").replace(/([0-9])\)/g, "$1.0)").replace(/\(int\)/g, "");
1715-
arg2 = arg2.replace(/([0-9]) /g, "$1.0 ").replace(/([0-9])\)/g, "$1.0)").replace(/\(int\)/g, "");
1716+
var arg3 = Blockly.propc.valueToCode(this, 'ARG3', Blockly.propc.ORDER_ATOMIC) || '1';
1717+
arg1 = arg1.replace(/([0-9])(\xA0| |\)|$)/g, "$1.0$2").replace(/\(int\)/g, "");
1718+
arg2 = arg2.replace(/([0-9])(\xA0| |\)|$)/g, "$1.0$2").replace(/\(int\)/g, "");
1719+
arg3 = arg3.replace(/([0-9])(\xA0| |\)|$)/g, "$1.0$2").replace(/\(int\)/g, "");
17161720
var operator = this.getFieldValue('OP');
17171721
var opTrig = '/';
17181722
if (operator === 'atan2')
17191723
opTrig = ',';
17201724

1721-
var code = store + ' = (int) (180.0 * ' + operator + '(((float) ' + arg1 + ')' + opTrig + '((float) ' + arg2 + ')) / PI + 0.5);\n';
1725+
var code = store + ' = (int) (180.0 * ' + operator + '(((float) ' + arg1 + ')' + opTrig + '((float) ' + arg2 + ')) * ' + arg3 + ' / PI + 0.5);\n';
17221726

17231727
return code;
17241728
};

src/main/webapp/frame/framec.jsp

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,13 @@
150150
<block type="logic_negate"></block>
151151
<block type="logic_compare"></block>
152152
<block type="math_advanced"></block>
153-
<block type="math_inv_trig"></block>
153+
<block type="math_inv_trig">
154+
<value name="ARG3">
155+
<block type="math_number">
156+
<field name="NUM">1</field>
157+
</block>
158+
</value>
159+
</block>
154160
</category>
155161
<category name="<fmt:message key="category.operators.strings" />" >
156162
<block type="string_compare"></block>
@@ -1051,12 +1057,12 @@
10511057
<block type="GPS_altitude"></block>
10521058
<block type="GPS_velocity"></block>
10531059
<block type="GPS_satsTracked"></block>
1054-
<c:choose>
1055-
<c:when test="${experimental == true}">
1060+
<c:choose>
1061+
<c:when test="${experimental == true}">
10561062
<block type="GPS_date_time"></block>
1057-
</c:when>
1058-
</c:choose>
1059-
</category>
1063+
</c:when>
1064+
</c:choose>
1065+
</category>
10601066
<category name="<fmt:message key="category.sensor-input.fingerprint" />">
10611067
<block type="fp_scanner_init"></block>
10621068
<block type="fp_scanner_add">
@@ -1068,12 +1074,12 @@
10681074
</block>
10691075
<block type="fp_scanner_scan"></block>
10701076
</category>
1071-
<!--
1072-
<category name="<fmt:message key="category.sensor-input.hmc5883l" />">
1073-
<block type="HMC5883L_init"></block>
1074-
<block type="HMC5883L_read"></block>
1075-
</category>
1076-
-->
1077+
<!--
1078+
<category name="<fmt:message key="category.sensor-input.hmc5883l" />">
1079+
<block type="HMC5883L_init"></block>
1080+
<block type="HMC5883L_read"></block>
1081+
</category>
1082+
-->
10771083
<category name="<fmt:message key="category.sensor-input.LSM9DS1" />">
10781084
<block type="lsm9ds1_init"></block>
10791085
<block type="lsm9ds1_mag_calibrate"></block>
@@ -1088,12 +1094,12 @@
10881094
<block type="MX2125_tilt_xaxis"></block>
10891095
<block type="MX2125_tilt_yaxis"></block>
10901096
</category>
1091-
<!--
1092-
<category name="<fmt:message key="category.sensor-input.mma7455" />">
1093-
<block type="MMA7455_init"></block>
1094-
<block type="MMA7455_acceleration"></block>
1095-
</category>
1096-
-->
1097+
<!--
1098+
<category name="<fmt:message key="category.sensor-input.mma7455" />">
1099+
<block type="MMA7455_init"></block>
1100+
<block type="MMA7455_acceleration"></block>
1101+
</category>
1102+
-->
10971103
<category name="<fmt:message key="category.sensor-input.pir" />">
10981104
<block type="PIR_Sensor"></block>
10991105
</category>
@@ -1296,7 +1302,13 @@
12961302
<block type="logic_compare"></block>
12971303
<block type="constrain_value"></block>
12981304
<block type="math_advanced"></block>
1299-
<block type="math_inv_trig"></block>
1305+
<block type="math_inv_trig">
1306+
<value name="ARG3">
1307+
<block type="math_number">
1308+
<field name="NUM">1</field>
1309+
</block>
1310+
</value>
1311+
</block>
13001312
</category>
13011313
<category name="<fmt:message key="category.sensor-input" />" include="s3" colour=140>
13021314
<category name="<fmt:message key="category.sensor-input.s3-line" />">
@@ -1314,9 +1326,9 @@
13141326
<category name="<fmt:message key="category.sensor-input.s3-stall" />">
13151327
<block type="scribbler_if_stalled"></block>
13161328
<block type="stall_sensor"></block>
1317-
<!--
1318-
<block type="spinning_sensor"></block>
1319-
-->
1329+
<!--
1330+
<block type="spinning_sensor"></block>
1331+
-->
13201332
</category>
13211333
<category name="<fmt:message key="category.sensor-input.s3-mic" />">
13221334
<block type="mic_s3_get"></block>

0 commit comments

Comments
 (0)