6
6
export default function ( Generator ) {
7
7
Generator . microbitMore_whenButtonPressed = function ( block ) {
8
8
block . isStatement = true ;
9
- const btn = Generator . valueToCode ( block , 'BTN' , Generator . ORDER_NONE ) || null ;
10
- return `${ Generator . spriteName ( ) } .when(:mbit_more_button_pressed, ${ btn } ) do\n` ;
9
+ const btn = Generator . valueToCode ( block , 'BTN' , Generator . ORDER_NONE ) || Generator . quote_ ( 'A' ) ;
10
+ return `microbit_more.when_button_pressed( ${ btn } ) do\n` ;
11
11
} ;
12
12
13
13
Generator . microbitMore_isButtonPressed = function ( block ) {
14
- const btn = Generator . valueToCode ( block , 'BTN' , Generator . ORDER_NONE ) || null ;
15
- return `mbit_more .button_pressed?(${ btn } )\n` ;
14
+ const btn = Generator . valueToCode ( block , 'BTN' , Generator . ORDER_NONE ) || Generator . quote_ ( 'A' ) ;
15
+ return [ `microbit_more .button_pressed?(${ btn } )` , Generator . ORDER_FUNCTION_CALL ] ;
16
16
} ;
17
17
18
18
Generator . microbitMore_whenGesture = function ( block ) {
19
19
block . isStatement = true ;
20
- const gesture = Generator . valueToCode ( block , 'GESTURE' , Generator . ORDER_NONE ) || null ;
21
- return `${ Generator . spriteName ( ) } . when(:mbit_more_gesture, ${ gesture } ) do\n` ;
20
+ const gesture = Generator . valueToCode ( block , 'GESTURE' , Generator . ORDER_NONE ) || Generator . quote_ ( 'moved' ) ;
21
+ return `microbit_more. when(${ gesture } ) do\n` ;
22
22
} ;
23
23
24
+ const makeMatrixArgs = function ( matrix ) {
25
+ matrix = matrix . replace ( / 0 / g, '.' ) ;
26
+ matrix = matrix . match ( / .{ 5 } / g) . map ( s => Generator . quote_ ( s ) ) ;
27
+ return matrix . join ( ',\n' ) ;
28
+ } ;
24
29
Generator . microbitMore_displaySymbol = function ( block ) {
25
- let matrix = Generator . valueToCode ( block , 'MATRIX' , Generator . ORDER_NONE ) || null ;
26
- matrix = Generator . prefixLines ( matrix , Generator . INDENT ) ;
27
- return `mbit_more.display(\n${ matrix } \n)\n` ;
30
+ let matrix = Generator . valueToCode ( block , 'MATRIX' , Generator . ORDER_NONE ) ;
31
+ if ( ! matrix ) {
32
+ matrix = makeMatrixArgs ( '0101010101100010101000100' ) ;
33
+ }
34
+ if ( matrix . indexOf ( '\n' ) >= 0 ) {
35
+ matrix = `\n${ Generator . prefixLines ( matrix , Generator . INDENT ) } \n` ;
36
+ }
37
+ return `microbit_more.display(${ matrix } )\n` ;
28
38
} ;
29
39
30
40
Generator . microbitMore_displayText = function ( block ) {
31
- const text = Generator . valueToCode ( block , 'TEXT' , Generator . ORDER_NONE ) || null ;
32
- return `mbit_more .display_text(${ text } )\n` ;
41
+ const text = Generator . valueToCode ( block , 'TEXT' , Generator . ORDER_NONE ) || Generator . quote_ ( 'Hello!' ) ;
42
+ return `microbit_more .display_text(${ text } )\n` ;
33
43
} ;
34
44
35
45
Generator . microbitMore_displayClear = function ( ) {
36
- return `mbit_more .clear_display\n` ;
46
+ return `microbit_more .clear_display\n` ;
37
47
} ;
38
48
39
49
Generator . microbitMore_whenTilted = function ( block ) {
40
50
block . isStatement = true ;
41
51
const direction = Generator . valueToCode ( block , 'DIRECTION' , Generator . ORDER_NONE ) || null ;
42
- return `${ Generator . spriteName ( ) } .when(:mbit_more_tilted, ${ direction } ) do\n` ;
52
+ return `microbit_more.when_tilted( ${ direction } ) do\n` ;
43
53
} ;
44
54
45
55
Generator . microbitMore_isTilted = function ( block ) {
46
56
const direction = Generator . valueToCode ( block , 'DIRECTION' , Generator . ORDER_NONE ) || null ;
47
- return [ `mbit_more .tilted?(${ direction } )` , Generator . ORDER_ATOMIC ] ;
57
+ return [ `microbit_more .tilted?(${ direction } )` , Generator . ORDER_ATOMIC ] ;
48
58
} ;
49
59
50
60
Generator . microbitMore_getTiltAngle = function ( block ) {
51
61
const direction = Generator . valueToCode ( block , 'DIRECTION' , Generator . ORDER_NONE ) || null ;
52
- return [ `mbit_more .tilt_angle(${ direction } )` , Generator . ORDER_ATOMIC ] ;
62
+ return [ `microbit_more .tilt_angle(${ direction } )` , Generator . ORDER_ATOMIC ] ;
53
63
} ;
54
64
55
65
Generator . microbitMore_whenPinConnected = function ( block ) {
56
66
block . isStatement = true ;
57
67
const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
58
- return `${ Generator . spriteName ( ) } .when(:mbit_more_pin_connected, ${ pin } ) do\n` ;
68
+ return `microbit_more.when_pin_connected( ${ pin } ) do\n` ;
59
69
} ;
60
70
61
71
Generator . microbitMore_isPinConnected = function ( block ) {
62
72
const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
63
- return `mbit_more .pin_connected?(${ pin } )\n` ;
73
+ return [ `microbit_more .pin_connected?(${ pin } )` , Generator . ORDER_FUNCTION_CALL ] ;
64
74
} ;
65
75
66
76
Generator . microbitMore_getLightLevel = function ( ) {
67
- return `mbit_more.light_level\n` ;
77
+ return [ 'microbit_more.light_intensity' , Generator . ORDER_FUNCTION_CALL ] ;
68
78
} ;
69
79
70
80
Generator . microbitMore_getTemperature = function ( ) {
71
- return `mbit_more .temperature\n` ;
81
+ return [ 'microbit_more .temperature' , Generator . ORDER_FUNCTION_CALL ] ;
72
82
} ;
73
83
74
84
Generator . microbitMore_getCompassHeading = function ( ) {
75
- return `mbit_more.compass_heading\n` ;
85
+ return [ 'microbit_more.angle_with_the_north' , Generator . ORDER_FUNCTION_CALL ] ;
76
86
} ;
77
87
78
88
Generator . microbitMore_getPitch = function ( ) {
79
- return `mbit_more .pitch\n` ;
89
+ return [ 'microbit_more .pitch' , Generator . ORDER_FUNCTION_CALL ] ;
80
90
} ;
81
91
82
92
Generator . microbitMore_getRoll = function ( ) {
83
- return `mbit_more .roll\n` ;
93
+ return [ 'microbit_more .roll' , Generator . ORDER_FUNCTION_CALL ] ;
84
94
} ;
85
95
86
- Generator . microbitMore_getMagneticForce = function ( block ) {
87
- const axis = Generator . valueToCode ( block , 'AXIS' , Generator . ORDER_NONE ) || null ;
88
- return `mbit_more.get_magnetic_force(${ axis } )\n` ;
96
+ Generator . microbitMore_getMagneticForce = function ( ) {
97
+ return [ 'microbit_more.magnetic_force' , Generator . ORDER_FUNCTION_CALL ] ;
89
98
} ;
90
99
91
100
Generator . microbitMore_getAcceleration = function ( block ) {
92
101
const axis = Generator . valueToCode ( block , 'AXIS' , Generator . ORDER_NONE ) || null ;
93
- return `mbit_more.get_acceleration (${ axis } )\n` ;
102
+ return [ `microbit_more.acceleration (${ axis } )` , Generator . ORDER_FUNCTION_CALL ] ;
94
103
} ;
95
104
96
105
Generator . microbitMore_getAnalogValue = function ( block ) {
97
106
const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
98
- return `mbit_more.get_analog_value (${ pin } )\n` ;
107
+ return [ `microbit_more.analog_value_of_pin (${ pin } )` , Generator . ORDER_FUNCTION_CALL ] ;
99
108
} ;
100
109
101
110
Generator . microbitMore_getDigitalValue = function ( block ) {
102
111
const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
103
- return `mbit_more.get_digital_value (${ pin } )\n` ;
112
+ return [ `microbit_more.digital_value_of_pin (${ pin } )` , Generator . ORDER_FUNCTION_CALL ] ;
104
113
} ;
105
114
115
+ const PinModeLabel = {
116
+ pullNone : 'none' ,
117
+ pullUp : 'up' ,
118
+ pullDown : 'down'
119
+ } ;
106
120
Generator . microbitMore_setPinMode = function ( block ) {
107
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
108
- const mode = Generator . quote_ ( Generator . getFieldValue ( block , 'MODE' ) ) || null ;
109
- return `mbit_more.set_pin_mode(${ pin } , ${ mode } )\n` ;
121
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
122
+ const mode = Generator . getFieldValue ( block , 'MODE' ) || 'pullUp' ;
123
+ const modeLabel = Generator . quote_ ( PinModeLabel [ mode ] ) ;
124
+ return `microbit_more.set_pin_to_input_pull(${ pin } , ${ modeLabel } )\n` ;
110
125
} ;
111
126
112
127
Generator . microbitMore_setOutput = function ( block ) {
113
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
114
- const level = Generator . valueToCode ( block , 'LEVEL' , Generator . ORDER_NONE ) || null ;
115
- return `mbit_more.set_output (${ pin } , ${ level } )\n` ;
128
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
129
+ const level = Generator . valueToCode ( block , 'LEVEL' , Generator . ORDER_NONE ) || 0 ;
130
+ return `microbit_more.set_digital (${ pin } , ${ level } )\n` ;
116
131
} ;
117
132
118
133
Generator . microbitMore_setPWM = function ( block ) {
119
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
120
- const level = Generator . valueToCode ( block , 'LEVEL' , Generator . ORDER_NONE ) || null ;
121
- return `mbit_more .set_pwm(${ pin } , ${ level } )\n` ;
134
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
135
+ const level = Generator . valueToCode ( block , 'LEVEL' , Generator . ORDER_NONE ) || 0 ;
136
+ return `microbit_more .set_pwm(${ pin } , ${ level } )\n` ;
122
137
} ;
123
138
124
139
Generator . microbitMore_setServo = function ( block ) {
125
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
126
- const angle = Generator . valueToCode ( block , 'ANGLE' , Generator . ORDER_NONE ) || null ;
127
- const range = Generator . valueToCode ( block , 'RANGE' , Generator . ORDER_NONE ) || 2000 ;
128
- const center = Generator . valueToCode ( block , 'CENTER' , Generator . ORDER_NONE ) || 1500 ;
129
- return `mbit_more.set_servo(${ pin } , ${ angle } , ${ range } , ${ center } )\n` ;
140
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
141
+ const angle = Generator . valueToCode ( block , 'ANGLE' , Generator . ORDER_NONE ) || 0 ;
142
+ return `microbit_more.set_servo(${ pin } , ${ angle } )\n` ;
130
143
} ;
131
144
145
+ const EventTypeLabel = {
146
+ 0 : 'none' ,
147
+ 1 : 'edge' ,
148
+ 2 : 'pulse'
149
+ } ;
132
150
Generator . microbitMore_setPinEventType = function ( block ) {
133
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
134
- const eventType = Generator . getFieldValue ( block , 'EVENT_TYPE' ) || null ;
135
- return `mbit_more.set_pin_event_type(${ pin } , ${ eventType } )\n` ;
151
+ const eventType = Generator . getFieldValue ( block , 'EVENT_TYPE' ) || 0 ;
152
+ const eventTypeLabel = Generator . quote_ ( EventTypeLabel [ eventType ] ) ;
153
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
154
+ return `microbit_more.catch_event_on(${ eventTypeLabel } , ${ pin } )\n` ;
136
155
} ;
137
156
157
+ const EventLabel = {
158
+ 5 : 'low pulse' ,
159
+ 4 : 'high pulse' ,
160
+ 3 : 'fall' ,
161
+ 2 : 'rise'
162
+ } ;
138
163
Generator . microbitMore_whenPinEvent = function ( block ) {
139
164
block . isStatement = true ;
140
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
141
- const event = Generator . getFieldValue ( block , 'EVENT' ) || null ;
142
- return `${ Generator . spriteName ( ) } .when(:mbit_more_pin_event, ${ pin } , ${ event } ) do\n` ;
165
+ const event = Generator . getFieldValue ( block , 'EVENT' ) || 5 ;
166
+ const eventLabel = Generator . quote_ ( EventLabel [ event ] ) ;
167
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
168
+ return `microbit_more.when_catch_at_pin(${ eventLabel } , ${ pin } ) do\n` ;
143
169
} ;
144
170
145
171
Generator . microbitMore_getPinEventTimestamp = function ( block ) {
146
- const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || null ;
147
- const event = Generator . getFieldValue ( block , 'EVENT' ) || null ;
148
- return `mbit_more.get_pin_event_timestamp(${ pin } , ${ event } )\n` ;
172
+ const event = Generator . getFieldValue ( block , 'EVENT' ) || 5 ;
173
+ const eventLabel = Generator . quote_ ( EventLabel [ event ] ) ;
174
+ const pin = Generator . valueToCode ( block , 'PIN' , Generator . ORDER_NONE ) || 0 ;
175
+ return `microbit_more.timestamp_of(${ eventLabel } , ${ pin } )\n` ;
149
176
} ;
150
177
151
178
Generator . microbitMore_getSharedData = function ( block ) {
152
- const index = Generator . valueToCode ( block , 'INDEX' , Generator . ORDER_NONE ) || null ;
153
- return `mbit_more.get_shared_data( ${ index } )\n` ;
179
+ const index = Generator . valueToCode ( block , 'INDEX' , Generator . ORDER_NONE ) || 0 ;
180
+ return [ `microbit_more.shared_data[ ${ index } ]` , Generator . ORDER_FUNCTION_CALL ] ;
154
181
} ;
155
182
156
183
Generator . microbitMore_setSharedData = function ( block ) {
157
- const index = Generator . valueToCode ( block , 'INDEX' , Generator . ORDER_NONE ) || null ;
158
- const value = Generator . valueToCode ( block , 'VALUE' , Generator . ORDER_NONE ) || null ;
159
- return `mbit_more.set_shared_data( ${ index } , ${ value } ) \n` ;
184
+ const index = Generator . valueToCode ( block , 'INDEX' , Generator . ORDER_NONE ) || 0 ;
185
+ const value = Generator . valueToCode ( block , 'VALUE' , Generator . ORDER_NONE ) || 0 ;
186
+ return `microbit_more.shared_data[ ${ index } ] = ${ value } \n` ;
160
187
} ;
161
188
162
189
Generator . microbitMore_whenConnectionChanged = function ( block ) {
163
190
block . isStatement = true ;
164
- const state = Generator . getFieldValue ( block , 'STATE' ) || null ;
165
- return `${ Generator . spriteName ( ) } .when(:mbit_more_connection_changed, ${ state } ) do\n` ;
191
+ const state = Generator . quote_ ( Generator . getFieldValue ( block , 'STATE' ) || 'connected' ) ;
192
+ return `microbit_more.when_microbit( ${ state } ) do\n` ;
166
193
} ;
167
194
168
195
Generator . microbitMore_menu_buttons = function ( block ) {
@@ -196,7 +223,7 @@ export default function (Generator) {
196
223
} ;
197
224
198
225
Generator . microbitMore_menu_axis = function ( block ) {
199
- const axis = Generator . quote_ ( Generator . getFieldValue ( block , 'axis' ) || 'absolute ' ) ;
226
+ const axis = Generator . quote_ ( Generator . getFieldValue ( block , 'axis' ) || 'x ' ) ;
200
227
return [ axis , Generator . ORDER_ATOMIC ] ;
201
228
} ;
202
229
@@ -205,42 +232,19 @@ export default function (Generator) {
205
232
return [ analogIn , Generator . ORDER_ATOMIC ] ;
206
233
} ;
207
234
208
- Generator . microbitMore_menu_pinMode = function ( block ) {
209
- const pinMode = Generator . quote_ ( Generator . getFieldValue ( block , 'pinMode' ) || 'pullUp' ) ;
210
- return [ pinMode , Generator . ORDER_ATOMIC ] ;
211
- } ;
212
-
213
235
Generator . microbitMore_menu_digitalValue = function ( block ) {
214
236
const digitalValue = Generator . getFieldValue ( block , 'digitalValue' ) || 0 ;
215
237
return [ digitalValue , Generator . ORDER_ATOMIC ] ;
216
238
} ;
217
239
218
- Generator . microbitMore_menu_pinEventTypeMenu = function ( block ) {
219
- const pinEventTypeMenu = Generator . getFieldValue ( block , 'pinEventTypeMenu' ) || 0 ;
220
- return [ pinEventTypeMenu , Generator . ORDER_ATOMIC ] ;
221
- } ;
222
-
223
- Generator . microbitMore_menu_pinEventTimestampMenu = function ( block ) {
224
- const pinEventTimestampMenu = Generator . getFieldValue ( block , 'pinEventTimestampMenu' ) || 5 ;
225
- return [ pinEventTimestampMenu , Generator . ORDER_ATOMIC ] ;
226
- } ;
227
-
228
240
Generator . microbitMore_menu_sharedDataIndex = function ( block ) {
229
- const sharedDataIndex = Generator . quote_ ( Generator . getFieldValue ( block , 'sharedDataIndex' ) || 'absolute' ) ;
230
- return [ sharedDataIndex , Generator . ORDER_ATOMIC ] ;
231
- } ;
232
-
233
- Generator . microbitMore_menu_connectionStateMenu = function ( block ) {
234
- const connectionStateMenu =
235
- Generator . quote_ ( Generator . getFieldValue ( block , 'connectionStateMenu' ) || 'connected' ) ;
236
- return [ connectionStateMenu , Generator . ORDER_ATOMIC ] ;
241
+ const index = Generator . getFieldValue ( block , 'sharedDataIndex' ) || 0 ;
242
+ return [ index , Generator . ORDER_ATOMIC ] ;
237
243
} ;
238
244
239
245
Generator . matrix = function ( block ) {
240
- let matrix = Generator . getFieldValue ( block , 'MATRIX' ) || '0000000000000000000000000' ;
241
- matrix = matrix . replace ( / 0 / g, '.' ) ;
242
- matrix = matrix . match ( / .{ 5 } / g) . map ( s => Generator . quote_ ( s ) ) ;
243
- return [ matrix . join ( ',\n' ) , Generator . ORDER_ATOMIC ] ;
246
+ const matrix = Generator . getFieldValue ( block , 'MATRIX' ) || '0000000000000000000000000' ;
247
+ return [ makeMatrixArgs ( matrix ) , Generator . ORDER_ATOMIC ] ;
244
248
} ;
245
249
246
250
return Generator ;
0 commit comments