smalruby-editor 0.1.24-x86-mingw32 → 0.2.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of smalruby-editor might be problematic. Click here for more details.

Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +9 -0
  3. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +147 -62
  4. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -0
  5. data/app/assets/javascripts/msg/en_us.js +34 -12
  6. data/app/assets/javascripts/msg/ja.js +35 -15
  7. data/app/helpers/editor_helper.rb +2 -1
  8. data/app/models/concerns/ruby_to_block/block/{hardware_button_down_or_up.rb → hardware_button_pressed_or_released.rb} +3 -3
  9. data/app/models/concerns/ruby_to_block/block/{hardware_led_on.rb → hardware_led_turn_off.rb} +2 -2
  10. data/app/models/concerns/ruby_to_block/block/{hardware_led_off.rb → hardware_led_turn_on.rb} +2 -2
  11. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +2 -0
  12. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_on.rb → hardware_rgb_led_set_color.rb} +2 -2
  13. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_off.rb → hardware_rgb_led_turn_off.rb} +2 -2
  14. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action.rb +22 -0
  15. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action_with_sec.rb +24 -0
  16. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_led_turn_on_or_off.rb +22 -0
  17. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_light_sensor_value.rb +28 -0
  18. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_touch_sensor_pressed_or_released.rb +29 -0
  19. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +3 -1
  20. data/app/views/editor/_toolbox.html.haml +30 -17
  21. data/app/views/layouts/application.html.erb +3 -1
  22. data/config/locales/en.yml +1 -0
  23. data/config/locales/ja.yml +1 -0
  24. data/lib/smalruby_editor/blockly_message_helper.rb +2 -1
  25. data/lib/smalruby_editor/version.rb +1 -1
  26. data/lib/tasks/release.rake +0 -0
  27. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js} +3 -3
  28. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js.gz → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js.gz} +0 -0
  29. data/public/assets/{manifest-1a9856df207640ec658271db34b30dbb.json → manifest-ebd584fa603a378faf780f013e6a447d.json} +1 -1
  30. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js +1 -0
  31. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js.gz +0 -0
  32. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js +1 -0
  33. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js.gz +0 -0
  34. data/smalruby-editor.gemspec +1 -1
  35. data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
  36. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
  37. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
  38. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
  39. data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
  40. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
  41. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
  42. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
  43. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
  44. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
  45. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
  46. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
  47. data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
  48. data/spec/steps/block_mode_steps.rb +8 -0
  49. metadata +43 -35
  50. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
  51. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
  52. data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
  53. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js +0 -1
  54. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz +0 -0
  55. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js +0 -1
  56. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
  57. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
  58. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
  59. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
  60. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
  61. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
  62. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -8,6 +8,21 @@ goog.require('Blockly.Msg');
8
8
  * to message files.
9
9
  */
10
10
 
11
+ // common
12
+ Blockly.Msg.COMMON_TURN_ON = 'オンにする';
13
+ Blockly.Msg.COMMON_TURN_OFF = 'オフにする';
14
+ Blockly.Msg.COMMON_FORWARD = '進める';
15
+ Blockly.Msg.COMMON_BACKWARD = 'バックさせる';
16
+ Blockly.Msg.COMMON_TURN_LEFT = '左に曲げる';
17
+ Blockly.Msg.COMMON_TURN_RIGHT = '右に曲げる';
18
+ Blockly.Msg.COMMON_STOP = '止める';
19
+
20
+
21
+ // colour name
22
+ Blockly.Msg.COLOUR_RED = '赤色';
23
+ Blockly.Msg.COLOUR_GREEN = '緑色';
24
+
25
+
11
26
  // views/main_menu_view.js.coffee
12
27
  Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES = '行';
13
28
  Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS = '文字';
@@ -74,13 +89,16 @@ Blockly.Msg.BLOCKS_SENSING_K_DOWN = '↓';
74
89
  Blockly.Msg.BLOCKS_SENSING_K_LEFT = '←';
75
90
  Blockly.Msg.BLOCKS_SENSING_K_RIGHT = '→';
76
91
  Blockly.Msg.BLOCKS_SENSING_K_SPACE = 'スペース';
77
- Blockly.Msg.BLOCKS_SENSING_PUSH = '押された';
78
- Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN = '押され続けている';
79
- Blockly.Msg.BLOCKS_SENSING_DOWN = Blockly.Msg.BLOCKS_SENSING_PUSH;
92
+ Blockly.Msg.BLOCKS_SENSING_PRESSED = '押された';
93
+ Blockly.Msg.BLOCKS_SENSING_PUSH = Blockly.Msg.BLOCKS_SENSING_PRESSED;
94
+ Blockly.Msg.BLOCKS_SENSING_UP = Blockly.Msg.BLOCKS_SENSING_PRESSED;
95
+ Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED = '押され続けている';
96
+ Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN = Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED;
80
97
  Blockly.Msg.BLOCKS_SENSING_M_LBUTTON = '左ボタン';
81
98
  Blockly.Msg.BLOCKS_SENSING_M_MBUTTON = '中ボタン';
82
99
  Blockly.Msg.BLOCKS_SENSING_M_RBUTTON = '右ボタン';
83
- Blockly.Msg.BLOCKS_SENSING_UP = '離された';
100
+ Blockly.Msg.BLOCKS_SENSING_RELEASED = '離された';
101
+ Blockly.Msg.BLOCKS_SENSING_UP = Blockly.Msg.BLOCKS_SENSING_RELEASED;
84
102
  Blockly.Msg.BLOCKS_SENSING_REACH_WALL = '端に触れた';
85
103
  Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX = 'キーボードの';
86
104
  Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE = 'が';
@@ -153,17 +171,15 @@ Blockly.Msg.BLOCKS_LOOKS_HIDE = '隠す';
153
171
  Blockly.Msg.BLOCKS_LOOKS_VANISH = '消滅する';
154
172
 
155
173
  // blocks/hardware.js.coffee.erb
156
- Blockly.Msg.BLOCKS_HARDWARE_LED_ON = 'LED%1をオンにする';
157
- Blockly.Msg.BLOCKS_HARDWARE_LED_OFF = 'LED%1をオフにする';
174
+ Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_ON = 'LED%1をオンにする';
175
+ Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_OFF = 'LED%1をオフにする';
158
176
  Blockly.Msg.BLOCKS_HARDWARE_ANODE = 'アノード';
159
177
  Blockly.Msg.BLOCKS_HARDWARE_CATHODE = 'カソード';
160
178
  Blockly.Msg.BLOCKS_HARDWARE_LEFT = ' 左';
161
179
  Blockly.Msg.BLOCKS_HARDWARE_RIGHT = '右';
162
180
  Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE = 'ハードウェアを準備する';
163
- Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON = 'set RGB LED %1 common %2 color to %3';
164
-
165
- Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON = 'RGB LED%1コモン%2を%3にする';
166
- Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_OFF = 'RGB LED%1コモン%2をオフにする';
181
+ Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_SET_COLOR = 'RGB LED%1コモン%2を%3にする';
182
+ Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_TURN_OFF = 'RGB LED%1コモン%2をオフにする';
167
183
  Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW = '7セグディスプレイに%1を表示する';
168
184
  Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF = '7セグディスプレイをオフにする';
169
185
  Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS = 'LCDに%1を表示する';
@@ -188,11 +204,15 @@ Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP = '止める';
188
204
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER = '(モータードライバ%1で)モーターを%2';
189
205
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED = '(モータードライバ%1の)モーターの速度を%2にする';
190
206
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED = '(モータードライバ%1の)モーターの速度(%)';
191
- Blockly.Msg.BLOCKS_HARDWARE_BUTTON_DOWN_OR_UP = 'ボタン%1が%2';
192
- Blockly.Msg.BLOCKS_HARDWARE_ON_BUTTON_DOWN_OR_UP = 'ボタン%1が%2とき';
193
- Blockly.Msg.BLOCKS_HARDWARE_BUTTON_NOT_USE_PULLUP = 'ボタン%1のプルアップ抵抗を使わない';
194
- Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE = 'センサー%1';
195
- Blockly.Msg.BLOCKS_HARDWARE_ON_SENSOR_CHANGE = 'センサー%1が変化したとき';
207
+ Blockly.Msg.BLOCKS_HARDWARE_BUTTON_PRESSED_OR_RELEASED = 'ボタン %1 が %2';
208
+ Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE = 'センサー %1';
209
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LED_TURN_ON_OR_OFF = 'スモウルボットV3の %1 LEDを %2';
210
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SPEED = 'スモウルボットV3の %1 モーターの速度(%)';
211
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SET_SPEED = 'スモウルボットV3の %1 モーターの速度を %2 (%) にする';
212
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION = 'スモウルボットV3を %1';
213
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION_WITH_SEC = 'スモウルボットV3を %2 秒 %1';
214
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_TOUCH_SENSOR_PRESSED_OR_RELEASED = 'スモウルボットV3の %1 のタッチセンサーが %2 ?';
215
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LIGHT_SENSOR_VALUE = 'スモウルボットV3の光センサー';
196
216
 
197
217
 
198
218
  // blocks/operators.js.coffee.erb
@@ -32,10 +32,11 @@ module EditorHelper
32
32
  # @param [Numeric] value 数値
33
33
  # @return [String] XML
34
34
  def toolbox_number_value(name, value = 0)
35
+ value = value.to_i unless value.is_a?(Numeric)
35
36
  <<-XML.strip_heredoc.html_safe
36
37
  <value name="#{h name}">
37
38
  <block type="math_number">
38
- <field name="NUM">#{h value.to_i}</field>
39
+ <field name="NUM">#{h value}</field>
39
40
  </block>
40
41
  </value>
41
42
  XML
@@ -1,11 +1,11 @@
1
1
  module RubyToBlock
2
2
  module Block
3
- class HardwareButtonDownOrUp < Value
3
+ class HardwareButtonPressedOrReleased < Value
4
4
  include CharacterOperation
5
5
  include HardwareOperation
6
6
 
7
7
  blocknize '^\s*' + CHAR_RE +
8
- 'button\(' + DIO_PIN_RE + '\)\.(down|up)\?\s*$',
8
+ 'button\(' + DIO_PIN_RE + '\)\.(pressed|released)\?\s*$',
9
9
  value: true
10
10
 
11
11
  def self.process_match_data(md, context)
@@ -14,7 +14,7 @@ module RubyToBlock
14
14
  character = get_character(context, md2[1])
15
15
  return false if context.receiver && context.receiver != character
16
16
 
17
- block = new(fields: { PIN: md2[2], DOU: md2[3] })
17
+ block = new(fields: { PIN: md2[2], POR: md2[3] })
18
18
  context.add_value(block)
19
19
  block.character = character
20
20
 
@@ -1,8 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module RubyToBlock
3
3
  module Block
4
- class HardwareLedOn < CharacterMethodCall
5
- blocknize '^\s*' + CHAR_RE + 'led\("(D(?:[2-9]|1[0-3]))"\).on\s*$',
4
+ class HardwareLedTurnOff < CharacterMethodCall
5
+ blocknize '^\s*' + CHAR_RE + 'led\("(D(?:[2-9]|1[0-3]))"\).turn_off\s*$',
6
6
  statement: true
7
7
 
8
8
  def self.process_match_data(md, context)
@@ -1,8 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module RubyToBlock
3
3
  module Block
4
- class HardwareLedOff < CharacterMethodCall
5
- blocknize '^\s*' + CHAR_RE + 'led\("(D(?:[2-9]|1[0-3]))"\).off\s*$',
4
+ class HardwareLedTurnOn < CharacterMethodCall
5
+ blocknize '^\s*' + CHAR_RE + 'led\("(D(?:[2-9]|1[0-3]))"\).turn_on\s*$',
6
6
  statement: true
7
7
 
8
8
  def self.process_match_data(md, context)
@@ -10,6 +10,8 @@ module RubyToBlock
10
10
  AIO_PIN_RE = '\s*"(A[0-5])"\s*'
11
11
  TWO_WHEEL_DRIVE_CAR_PIN_RE = '\s*"(D[56])"\s*'
12
12
  LOR_RE = '(left|right)'
13
+ POR_RE = '(pressed|released)'
14
+ ACTION_RE = '(forward|backward|turn_left|turn_right|stop)'
13
15
  end
14
16
  end
15
17
  end
@@ -1,9 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module RubyToBlock
3
3
  module Block
4
- class HardwareRgbLedOn < CharacterMethodCall
4
+ class HardwareRgbLedSetColor < CharacterMethodCall
5
5
  # rubocop:disable LineLength
6
- blocknize '^\s*' + CHAR_RE + 'rgb_led_(anode|cathode)\("(D[39])"\).on\(color:\s*\[(\d+),\s*(\d+),\s*(\d+)\]\)\s*$',
6
+ blocknize '^\s*' + CHAR_RE + 'rgb_led_(anode|cathode)\("(D[39])"\).color\s*=\s*\[(\d+),\s*(\d+),\s*(\d+)\]\s*$',
7
7
  statement: true
8
8
  # rubocop:enable LineLength
9
9
 
@@ -1,9 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module RubyToBlock
3
3
  module Block
4
- class HardwareRgbLedOff < CharacterMethodCall
4
+ class HardwareRgbLedTurnOff < CharacterMethodCall
5
5
  # rubocop:disable LineLength
6
- blocknize '^\s*' + CHAR_RE + 'rgb_led_(anode|cathode)\("(D[39])"\)\.off\s*$',
6
+ blocknize '^\s*' + CHAR_RE + 'rgb_led_(anode|cathode)\("(D[39])"\)\.turn_off\s*$',
7
7
  statement: true
8
8
  # rubocop:enable LineLength
9
9
 
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+ module RubyToBlock
3
+ module Block
4
+ class HardwareSmalrubotV3Action < CharacterMethodCall
5
+ include HardwareOperation
6
+
7
+ # rubocop:disable LineLength
8
+ blocknize '^\s*' + CHAR_RE +
9
+ 'smalrubot_v3\.' + ACTION_RE +
10
+ '\s*$',
11
+ statement: true, inline: true
12
+ # rubocop:enable LineLength
13
+
14
+ def self.process_match_data(md, context)
15
+ md2 = regexp.match(md[type])
16
+ add_character_method_call_block(context, md2[1],
17
+ new(fields: { ACTION: md2[2] }))
18
+ true
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*-
2
+ module RubyToBlock
3
+ module Block
4
+ class HardwareSmalrubotV3ActionWithSec < CharacterMethodCall
5
+ include HardwareOperation
6
+
7
+ # rubocop:disable LineLength
8
+ blocknize '^\s*' + CHAR_RE +
9
+ 'smalrubot_v3\.' + ACTION_RE +
10
+ '\(\s*sec:\s*(\d+(?:\.\d+)?)\)' +
11
+ '\s*$',
12
+ statement: true, inline: true
13
+ # rubocop:enable LineLength
14
+
15
+ def self.process_match_data(md, context)
16
+ md2 = regexp.match(md[type])
17
+ add_character_method_call_block(context, md2[1],
18
+ new(fields: { ACTION: md2[2] }),
19
+ SEC: md2[3])
20
+ true
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+ module RubyToBlock
3
+ module Block
4
+ class HardwareSmalrubotV3LedTurnOnOrOff < CharacterMethodCall
5
+ include HardwareOperation
6
+
7
+ # rubocop:disable LineLength
8
+ blocknize '^\s*' + CHAR_RE +
9
+ 'smalrubot_v3\.(red|green)_led.(turn_on|turn_off)' +
10
+ '\s*$',
11
+ statement: true, inline: true
12
+ # rubocop:enable LineLength
13
+
14
+ def self.process_match_data(md, context)
15
+ md2 = regexp.match(md[type])
16
+ block = new(fields: { COLOUR: md2[2], OOO: md2[3] })
17
+ add_character_method_call_block(context, md2[1], block)
18
+ true
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ module RubyToBlock
2
+ module Block
3
+ class HardwareSmalrubotV3LightSensorValue < Value
4
+ include CharacterOperation
5
+
6
+ # rubocop:disable LineLength
7
+ blocknize '^\s*' + CHAR_RE +
8
+ 'smalrubot_v3\.' +
9
+ 'light_sensor\.value' +
10
+ '\s*$',
11
+ value: true
12
+ # rubocop:enable LineLength
13
+
14
+ def self.process_match_data(md, context)
15
+ md2 = regexp.match(md[type])
16
+
17
+ character = get_character(context, md2[1])
18
+ return false if context.receiver && context.receiver != character
19
+
20
+ block = new
21
+ context.add_value(block)
22
+ block.character = character
23
+
24
+ true
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ module RubyToBlock
2
+ module Block
3
+ class HardwareSmalrubotV3TouchSensorPressedOrReleased < Value
4
+ include CharacterOperation
5
+ include HardwareOperation
6
+
7
+ # rubocop:disable LineLength
8
+ blocknize '^\s*' + CHAR_RE +
9
+ 'smalrubot_v3\.' +
10
+ LOR_RE + '_touch_sensor\.' + POR_RE + '\?' +
11
+ '\s*$',
12
+ value: true
13
+ # rubocop:enable LineLength
14
+
15
+ def self.process_match_data(md, context)
16
+ md2 = regexp.match(md[type])
17
+
18
+ character = get_character(context, md2[1])
19
+ return false if context.receiver && context.receiver != character
20
+
21
+ block = new(fields: { LOR: md2[2], POR: md2[3] })
22
+ context.add_value(block)
23
+ block.character = character
24
+
25
+ true
26
+ end
27
+ end
28
+ end
29
+ end
@@ -2,7 +2,9 @@
2
2
  module RubyToBlock
3
3
  module Block
4
4
  class HardwareTwoWheelDriveCarCommands < Value
5
- blocknize '^\s*"(forward|backward|turn_left|turn_right|stop)"\s*$',
5
+ include HardwareOperation
6
+
7
+ blocknize '^\s*"' + ACTION_RE + '"\s*$',
6
8
  value: true, priority: 1
7
9
 
8
10
  def self.process_match_data(md, context)
@@ -140,6 +140,19 @@
140
140
  = toolbox_pin_field('D6')
141
141
  = toolbox_number_value('SPEED', 100)
142
142
 
143
+ - subcategory = 'smalrubot_v3'
144
+ %block{type: "#{category}_#{subcategory}_action"}
145
+ %field{name: 'ACTION'}<
146
+ forward
147
+
148
+ %block{type: "#{category}_#{subcategory}_action_with_sec"}
149
+ %field{name: 'ACTION'}<
150
+ forward
151
+ = toolbox_number_value('SEC', 0.5)
152
+
153
+ %block{type: "#{category}_#{subcategory}_motor_set_speed"}
154
+ = toolbox_number_value('SPEED', 100)
155
+
143
156
  - category = 'looks'
144
157
  %category{:name => t('.looks')}
145
158
  -# [ ]と( )秒言う
@@ -187,17 +200,17 @@
187
200
  - category = 'hardware'
188
201
  - subcategory = 'led'
189
202
  -# LED[▼PIN]をオンにする
190
- %block{:type => "#{category}_#{subcategory}_on"}
203
+ %block{:type => "#{category}_#{subcategory}_turn_on"}
191
204
 
192
205
  -# LED[▼PIN]をオフにする
193
- %block{:type => "#{category}_#{subcategory}_off"}
206
+ %block{:type => "#{category}_#{subcategory}_turn_off"}
194
207
 
195
208
  - subcategory = 'rgb_led'
196
209
  -# RGB LED[▼アノード]コモン[▼PIN]を[カラー]にする
197
- %block{:type => "#{category}_#{subcategory}_on"}
210
+ %block{:type => "#{category}_#{subcategory}_set_color"}
198
211
 
199
212
  -# RGB LED[▼アノード]コモン[▼PIN]をオフにする
200
- %block{:type => "#{category}_#{subcategory}_off"}
213
+ %block{:type => "#{category}_#{subcategory}_turn_off"}
201
214
 
202
215
  - subcategory = 'seven_segment_display'
203
216
  -# 7セグディスプレイに[▼0-9]を表示する
@@ -214,6 +227,13 @@
214
227
  -# LCDをクリアする
215
228
  %block{:type => "#{category}_#{subcategory}_clear"}
216
229
 
230
+ - subcategory = 'smalrubot_v3'
231
+ %block{type: "#{category}_#{subcategory}_led_turn_on_or_off"}
232
+ %field{name: 'COLOUR'}<
233
+ red
234
+ %field{name: 'OOO'}<
235
+ turn_on
236
+
217
237
  - category = 'sound'
218
238
  %category{:name => t('.sound')}
219
239
  -# [▼プリセット音声]の音を鳴らす
@@ -257,14 +277,6 @@
257
277
  -# [▼キャラクター]にぶつかったとき
258
278
  %block{:type => "#{category}_on_hit"}
259
279
 
260
- - if !raspberrypi?
261
- - category = 'hardware'
262
- -# センサー[▼PIN]が変化したとき
263
- %block{:type => "#{category}_on_sensor_change"}
264
-
265
- -# ボタン[▼PIN]が[▼押された]とき
266
- %block{:type => "#{category}_on_button_down_or_up"}
267
-
268
280
  - category = 'control'
269
281
  %category{:name => t('.control')}
270
282
  %category{:name => t('.control_loop')}
@@ -359,7 +371,7 @@
359
371
  = toolbox_pin_field('A0')
360
372
 
361
373
  -# 条件:ボタン[▼PIN]が[▼押された]
362
- %block{:type => "#{category}_button_down_or_up"}
374
+ %block{:type => "#{category}_button_pressed_or_released"}
363
375
  = toolbox_pin_field('D3')
364
376
 
365
377
  -# 2WD車[▼PIN]の[▼LOR]の速度%
@@ -370,6 +382,11 @@
370
382
  %block{:type => "#{category}_motor_driver_speed"}
371
383
  = toolbox_pin_field('D6')
372
384
 
385
+ - subcategory = 'smalrubot_v3'
386
+ %block{type: "#{category}_#{subcategory}_touch_sensor_pressed_or_released"}
387
+ %block{type: "#{category}_#{subcategory}_light_sensor_value"}
388
+ %block{type: "#{category}_#{subcategory}_motor_speed"}
389
+
373
390
  - category = 'operators'
374
391
  %category{:name => t('.operators')}
375
392
  %category{:name => t('.operators_calculate')}
@@ -477,7 +494,3 @@
477
494
  %category{:name => t('.etc_hardware')}
478
495
  -# ハードウェアを準備する
479
496
  %block{:type => "#{category}_init_hardware"}
480
-
481
- -# ボタン[▼PIN]のプルアップ抵抗を使わない
482
- %block{:type => "#{category}_button_not_use_pullup"}
483
- = toolbox_pin_field('D3')
@@ -1,7 +1,9 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>smalruby-editor</title>
4
+ <title>
5
+ <%= t('common.smalruby_editor', version: SmalrubyEditor::VERSION) %>
6
+ </title>
5
7
  <%= favicon_link_tag %>
6
8
  <link rel="apple-touch-icon" href="apple-touch-icon.png" />
7
9
  <meta name="application-name" content="Smalruby" />
@@ -1,5 +1,6 @@
1
1
  en:
2
2
  common:
3
+ smalruby_editor: "Smalruby v%{version}"
3
4
  "ok": "OK"
4
5
  cancel: "Cancel"
5
6