@@ -89,6 +89,40 @@ const EV3Converter = {
8989 }
9090 break ;
9191 }
92+ } else if ( ( this . _isSelf ( receiver ) || receiver === Opal . nil ) &&
93+ name === 'when' &&
94+ args . length === 2 && args [ 0 ] . type === 'sym' &&
95+ rubyBlockArgs && rubyBlockArgs . length === 0 &&
96+ rubyBlock ) {
97+ switch ( args [ 0 ] . value ) {
98+ case 'ev3_button_pressed' :
99+ if ( this . _isStringOrBlock ( args [ 1 ] ) ) {
100+ block = this . _createBlock ( 'ev3_whenButtonPressed' , 'hat' ) ;
101+ const sensor = Ev3SensorMenu . indexOf ( args [ 1 ] . toString ( ) ) ;
102+ this . _addInput (
103+ block ,
104+ 'PORT' ,
105+ this . _createFieldBlock ( 'ev3_menu_sensorPorts' , 'sensorPorts' , sensor . toString ( ) )
106+ ) ;
107+ this . _setParent ( rubyBlock , block ) ;
108+ }
109+ break ;
110+ case 'ev3_distance_gt' :
111+ if ( this . _isNumberOrBlock ( args [ 1 ] ) ) {
112+ block = this . _createBlock ( 'ev3_whenDistanceLessThan' , 'hat' ) ;
113+ this . _addNumberInput ( block , 'DISTANCE' , 'math_number' , args [ 1 ] , 5 ) ;
114+ this . _setParent ( rubyBlock , block ) ;
115+ }
116+ break ;
117+ case 'ev3_brightness_gt' :
118+ if ( this . _isNumberOrBlock ( args [ 1 ] ) ) {
119+ block = this . _createBlock ( 'ev3_whenBrightnessLessThan' , 'hat' ) ;
120+ this . _addNumberInput ( block , 'DISTANCE' , 'math_number' , args [ 1 ] , 50 ) ;
121+ this . _setParent ( rubyBlock , block ) ;
122+ }
123+ break ;
124+ }
125+
92126 }
93127 return block ;
94128 }
0 commit comments