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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42f6d2af5f4f6c84ae004c8ce00075e298c78d2f
4
- data.tar.gz: 850e6b965ebdd14beccf80b57e49295dda964d2c
3
+ metadata.gz: 4dd3553dbfd347641c2ac8d0f81805e3d64e21fd
4
+ data.tar.gz: bf109de3469a67a429ab6a315f5cd2146027f0b4
5
5
  SHA512:
6
- metadata.gz: fadf35fb278a419515c9d8b4ac222d0bbfbf2f82cbb515d1a0619a38b2c4001684aef925ecd702232b4e041f030577a9dc544e191149cffe6879b05c66850fed
7
- data.tar.gz: 21cb579247d0979cf0be7ce503207f3ba35f2ce42a80b61a9330c320672ed1429722db5d866b44694d2a81a47c7b46d2d933b5c3c91d21de31458d612c879268
6
+ metadata.gz: 6eb46d0028c2c00a156baa603c4a1bcadc82970a3e6891ebf9a926c7a74bd316a9050deae99e6482852f2765b6df257b139ece8a02a4f4b33b324a6a84000a7d
7
+ data.tar.gz: 1811228f88ed17898c8e8c7b11aec44c56246d41bba6d89381ea46c088d8dc8d5dcbd35341859615ba2388ecb9c5787327fbf6716c14884c4f1fe98953223dcf
data/Guardfile CHANGED
@@ -7,13 +7,19 @@
7
7
  ## Uncomment to clear the screen before every task
8
8
  # clearing :on
9
9
 
10
+ TEMPFILE_BY_EMACS = %r{/\.?\#[^\/]+$}
11
+
10
12
  group :red_green_refactor, halt_on_fail: true do
11
13
  guard :rubocop, all_on_start: false do
14
+ ignore(TEMPFILE_BY_EMACS)
15
+
12
16
  watch(%r{.+\.rb$})
13
17
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
14
18
  end
15
19
 
16
20
  guard :rspec, cmd: 'bundle exec bin/rspec' do
21
+ ignore(TEMPFILE_BY_EMACS)
22
+
17
23
  watch(%r{^spec/.+_spec\.rb$})
18
24
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
19
25
  watch('spec/spec_helper.rb') { "spec" }
@@ -36,10 +42,13 @@ group :red_green_refactor, halt_on_fail: true do
36
42
  end
37
43
 
38
44
  guard 'livereload' do
45
+ ignore(TEMPFILE_BY_EMACS)
46
+
39
47
  watch(%r{app/views/.+\.(erb|haml|slim)$})
40
48
  watch(%r{app/helpers/.+\.rb})
41
49
  watch(%r{public/.+\.(css|js|html)})
42
50
  watch(%r{config/locales/.+\.yml})
51
+
43
52
  # Rails Assets Pipeline
44
53
  watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
45
54
  end
@@ -12,8 +12,9 @@ pwmPinDropdown = null
12
12
  rgbLedPinDropdown = null
13
13
  aiPinDropdown = null
14
14
  acDropdown = null
15
- lorPinDropdown = null
15
+ lorDropdown = null
16
16
  twoWDPinDropdown = null
17
+ actionDropdown = null
17
18
 
18
19
  $(document).ready ->
19
20
  # ハードウェアの環境設定
@@ -40,13 +41,21 @@ $(document).ready ->
40
41
  [<%= bm('.cathode') %>, 'cathode']
41
42
  ]
42
43
 
43
- lorPinDropdown = [
44
+ lorDropdown = [
44
45
  [<%= bm('.left') %>, 'left'],
45
46
  [<%= bm('.right') %>, 'right'],
46
47
  ]
47
48
 
48
49
  twoWDPinDropdown = (["D#{n}", "D#{n}"] for n in [5, 6])
49
50
 
51
+ actionDropdown = [
52
+ [<%= bm('common.forward') %>, 'forward'],
53
+ [<%= bm('common.backward') %>, 'backward'],
54
+ [<%= bm('common.turn_left') %>, 'turn_left'],
55
+ [<%= bm('common.turn_right') %>, 'turn_right'],
56
+ [<%= bm('common.stop') %>, 'stop'],
57
+ ]
58
+
50
59
  # ハードウェアを準備する
51
60
  <% n = "#{category}_init_hardware" %>
52
61
  Blockly.Blocks['<%= n %>'] =
@@ -65,7 +74,7 @@ Blockly.Ruby['<%= n %>'] = (block) ->
65
74
  # LED[▼PIN]をオンにする
66
75
  # LED[▼PIN]をオフにする
67
76
  <%
68
- %w(on off).each do |method|
77
+ %w(turn_on turn_off).each do |method|
69
78
  n = "#{category}_led_#{method}"
70
79
  %>
71
80
 
@@ -90,12 +99,12 @@ Blockly.Ruby['<%= n %>'] = (block) ->
90
99
  # 「RGB LED」サブジャンル
91
100
 
92
101
  # RGB LED[▼アノード]コモン[▼PIN]を[カラー]にする
93
- <% n = "#{category}_rgb_led_on" %>
102
+ <% n = "#{category}_rgb_led_set_color" %>
94
103
  Blockly.Blocks['<%= n %>'] =
95
104
  init: ()->
96
105
  @setHelpUrl('')
97
106
  @setColour(<%= colors[:looks] %>)
98
- @interpolateMsg(<%= bm('.rgb_led_on') %>,
107
+ @interpolateMsg(<%= bm('.rgb_led_set_color') %>,
99
108
  ['AC', ['Dropdown', acDropdown], Blockly.ALIGN_RIGHT],
100
109
  ['PIN', ['Dropdown', rgbLedPinDropdown], Blockly.ALIGN_RIGHT],
101
110
  ['COLOUR', ['Colour', '#ff0000'], Blockly.ALIGN_RIGHT],
@@ -111,16 +120,16 @@ Blockly.Ruby['<%= n %>'] = (block) ->
111
120
  red = parseInt(c[1..2], 16)
112
121
  green = parseInt(c[3..4], 16)
113
122
  blue = parseInt(c[5..6], 16)
114
- Blockly.Ruby.characterMethodCall_("rgb_led_#{ac}(#{Blockly.Ruby.quote_(pin)}).on",
115
- "color: [#{red}, #{green}, #{blue}]")
123
+ Blockly.Ruby.characterSetVariable_("rgb_led_#{ac}(#{Blockly.Ruby.quote_(pin)}).color",
124
+ "[#{red}, #{green}, #{blue}]")
116
125
 
117
126
  # RGB LED[▼アノード]コモン[▼PIN]をオフにする
118
- <% n = "#{category}_rgb_led_off" %>
127
+ <% n = "#{category}_rgb_led_turn_off" %>
119
128
  Blockly.Blocks['<%= n %>'] =
120
129
  init: ()->
121
130
  @setHelpUrl('')
122
131
  @setColour(<%= colors[:looks] %>)
123
- @interpolateMsg(<%= bm('.rgb_led_off') %>,
132
+ @interpolateMsg(<%= bm('.rgb_led_turn_off') %>,
124
133
  ['AC', ['Dropdown', acDropdown], Blockly.ALIGN_RIGHT],
125
134
  ['PIN', ['Dropdown', rgbLedPinDropdown], Blockly.ALIGN_RIGHT],
126
135
  Blockly.ALIGN_RIGHT)
@@ -131,7 +140,7 @@ Blockly.Blocks['<%= n %>'] =
131
140
  Blockly.Ruby['<%= n %>'] = (block) ->
132
141
  ac = @getFieldValue('AC')
133
142
  pin = @getFieldValue('PIN')
134
- Blockly.Ruby.characterMethodCall_("rgb_led_#{ac}(#{Blockly.Ruby.quote_(pin)}).off")
143
+ Blockly.Ruby.characterMethodCall_("rgb_led_#{ac}(#{Blockly.Ruby.quote_(pin)}).turn_off")
135
144
 
136
145
  # 「7セグディスプレイ」サブジャンル
137
146
 
@@ -285,17 +294,10 @@ Blockly.Ruby['<%= n %>'] = (block) ->
285
294
  <% n = "#{category}_#{subcategory}_commands" %>
286
295
  Blockly.Blocks['<%= n %>'] =
287
296
  init: ()->
288
- commands = [
289
- [<%= bm(".#{subcategory}_commands_forward") %>, 'forward'],
290
- [<%= bm(".#{subcategory}_commands_backward") %>, 'backward'],
291
- [<%= bm(".#{subcategory}_commands_turn_left") %>, 'turn_left'],
292
- [<%= bm(".#{subcategory}_commands_turn_right") %>, 'turn_right'],
293
- [<%= bm(".#{subcategory}_commands_stop") %>, 'stop'],
294
- ]
295
297
  @setHelpUrl('')
296
298
  @setColour(<%= colors[:motion] %>)
297
299
  @appendDummyInput()
298
- .appendField(new Blockly.FieldDropdown(commands), 'COMMAND')
300
+ .appendField(new Blockly.FieldDropdown(actionDropdown), 'COMMAND')
299
301
  @setOutput(true, 'String')
300
302
  @setTooltip('')
301
303
 
@@ -311,7 +313,7 @@ Blockly.Blocks['<%= n %>'] =
311
313
  @setColour(<%= colors[:motion] %>)
312
314
  @interpolateMsg(<%= bm(".#{subcategory}_set_speed") %>,
313
315
  ['PIN', ['Dropdown', pwmPinDropdown], Blockly.ALIGN_RIGHT],
314
- ['LOR', ['Dropdown', lorPinDropdown], Blockly.ALIGN_RIGHT],
316
+ ['LOR', ['Dropdown', lorDropdown], Blockly.ALIGN_RIGHT],
315
317
  ['SPEED', ['Number'], Blockly.ALIGN_RIGHT],
316
318
  Blockly.ALIGN_RIGHT)
317
319
  @setInputsInline(true)
@@ -333,7 +335,7 @@ Blockly.Blocks['<%= n %>'] =
333
335
  @setColour(<%= colors[:sensing] %>)
334
336
  @interpolateMsg(<%= bm(".#{subcategory}_speed") %>,
335
337
  ['PIN', ['Dropdown', pwmPinDropdown], Blockly.ALIGN_RIGHT],
336
- ['LOR', ['Dropdown', lorPinDropdown], Blockly.ALIGN_RIGHT],
338
+ ['LOR', ['Dropdown', lorDropdown], Blockly.ALIGN_RIGHT],
337
339
  Blockly.ALIGN_RIGHT)
338
340
  @setOutput(true, 'Number')
339
341
  @setTooltip('')
@@ -413,96 +415,179 @@ Blockly.Ruby['<%= n %>'] = (block) ->
413
415
  # 「ボタン」サブジャンル
414
416
 
415
417
  # 条件:ボタン[▼PIN]が[▼押された]
416
- <% n = "#{category}_button_down_or_up" %>
418
+ <% n = "#{category}_button_pressed_or_released" %>
417
419
  Blockly.Blocks['<%= n %>'] =
418
420
  init: ()->
419
- douDropdown = window.SmalrubyEditor.Sensing.DownOrUpDropdown
421
+ porDropdown = window.SmalrubyEditor.Sensing.PressedOrReleasedDropdown
420
422
 
421
423
  @setHelpUrl('')
422
424
  @setColour(<%= colors[:sensing] %>)
423
- @interpolateMsg(<%= bm(".button_down_or_up") %>,
425
+ @interpolateMsg(<%= bm(".button_pressed_or_released") %>,
424
426
  ['PIN', ['Dropdown', dioPinDropdown], Blockly.ALIGN_RIGHT],
425
- ['DOU', ['Dropdown', douDropdown], Blockly.ALIGN_RIGHT],
427
+ ['POR', ['Dropdown', porDropdown], Blockly.ALIGN_RIGHT],
426
428
  Blockly.ALIGN_RIGHT)
427
429
  @setOutput(true, 'Boolean')
428
430
  @setTooltip('')
429
431
 
430
432
  Blockly.Ruby['<%= n %>'] = (block) ->
431
433
  pin = @getFieldValue('PIN')
432
- dou = @getFieldValue('DOU')
433
- Blockly.Ruby.characterMethodCallInput_("button(#{Blockly.Ruby.quote_(pin)}).#{dou}?")
434
+ por = @getFieldValue('POR')
435
+ Blockly.Ruby.characterMethodCallInput_("button(#{Blockly.Ruby.quote_(pin)}).#{por}?")
434
436
 
435
- # ボタン[▼PIN]が[▼押された]とき
436
- <% n = "#{category}_on_button_down_or_up" %>
437
+ # 「センサー」サブジャンル
438
+
439
+ # センサー[▼PIN]
440
+ <% n = "#{category}_sensor_value" %>
437
441
  Blockly.Blocks['<%= n %>'] =
438
442
  init: ()->
439
- douDropdown = window.SmalrubyEditor.Sensing.DownOrUpDropdown
440
-
441
443
  @setHelpUrl('')
442
- @setColour(<%= colors[:events] %>)
443
- @interpolateMsg(<%= bm('.on_button_down_or_up') %>,
444
- ['PIN', ['Dropdown', dioPinDropdown], Blockly.ALIGN_RIGHT],
445
- ['DOU', ['Dropdown', douDropdown], Blockly.ALIGN_RIGHT],
444
+ @setColour(<%= colors[:sensing] %>)
445
+ @interpolateMsg(<%= bm('.sensor_value') %>,
446
+ ['PIN', ['Dropdown', aiPinDropdown], Blockly.ALIGN_RIGHT],
446
447
  Blockly.ALIGN_RIGHT)
447
- @appendStatementInput('DO')
448
- @setPreviousStatement(true)
449
- @setNextStatement(true)
448
+ @setOutput(true, 'Number')
450
449
  @setTooltip('')
451
450
 
452
451
  Blockly.Ruby['<%= n %>'] = (block) ->
453
452
  pin = @getFieldValue('PIN')
454
- dou = @getFieldValue('DOU')
455
- Blockly.Ruby.characterEvent_(block, 'DO', "button_#{dou}", Blockly.Ruby.quote_(pin))
453
+ Blockly.Ruby.characterMethodCallInput_("sensor(#{Blockly.Ruby.quote_(pin)}).value")
454
+
455
+ # SmalrubotV3 sub category
456
+ <% subcategory = 'smalrubot_v3' %>
456
457
 
457
- # ボタン[▼PIN]のプルアップ抵抗を使わない
458
- <% n = "#{category}_button_not_use_pullup" %>
458
+ # turn on/off Smalrubot v3 red/green LED
459
+ <% n = "#{category}_#{subcategory}_led_turn_on_or_off" %>
459
460
  Blockly.Blocks['<%= n %>'] =
460
461
  init: ()->
462
+ colourDropdown = [
463
+ [<%= bm('colour.red') %>, 'red'],
464
+ [<%= bm('colour.green') %>, 'green'],
465
+ ]
466
+ oooDropdown = [
467
+ [<%= bm('common.turn_on') %>, 'turn_on'],
468
+ [<%= bm('common.turn_off') %>, 'turn_off'],
469
+ ]
470
+
461
471
  @setHelpUrl('')
462
- @setColour(<%= colors[:etc] %>)
463
- @interpolateMsg(<%= bm('.button_not_use_pullup') %>,
464
- ['PIN', ['Dropdown', dioPinDropdown], Blockly.ALIGN_RIGHT],
472
+ @setColour(<%= colors[:looks] %>)
473
+ @interpolateMsg(<%= bm(".#{subcategory}_led_turn_on_or_off") %>,
474
+ ['COLOUR', ['Dropdown', colourDropdown], Blockly.ALIGN_RIGHT],
475
+ ['OOO', ['Dropdown', oooDropdown], Blockly.ALIGN_RIGHT],
465
476
  Blockly.ALIGN_RIGHT)
477
+ @setInputsInline(true)
466
478
  @setPreviousStatement(true)
467
479
  @setNextStatement(true)
468
480
  @setTooltip('')
469
481
 
470
482
  Blockly.Ruby['<%= n %>'] = (block) ->
471
- pin = @getFieldValue('PIN')
472
- Blockly.Ruby.characterMethodCall_("button(#{Blockly.Ruby.quote_(pin)}).not_use_pullup")
483
+ colour = @getFieldValue('COLOUR')
484
+ ooo = @getFieldValue('OOO')
485
+ Blockly.Ruby.characterMethodCall_("<%= subcategory %>.#{colour}_led.#{ooo}")
473
486
 
474
- # 「センサー」サブジャンル
475
-
476
- # センサー[▼PIN]
477
- <% n = "#{category}_sensor_value" %>
487
+ # Smalrubot v3 left/right motor speed
488
+ <% n = "#{category}_#{subcategory}_motor_speed" %>
478
489
  Blockly.Blocks['<%= n %>'] =
479
490
  init: ()->
480
491
  @setHelpUrl('')
481
492
  @setColour(<%= colors[:sensing] %>)
482
- @interpolateMsg(<%= bm('.sensor_value') %>,
483
- ['PIN', ['Dropdown', aiPinDropdown], Blockly.ALIGN_RIGHT],
493
+ @interpolateMsg(<%= bm(".#{subcategory}_motor_speed") %>,
494
+ ['LOR', ['Dropdown', lorDropdown], Blockly.ALIGN_RIGHT],
484
495
  Blockly.ALIGN_RIGHT)
485
496
  @setOutput(true, 'Number')
486
497
  @setTooltip('')
487
498
 
488
499
  Blockly.Ruby['<%= n %>'] = (block) ->
489
- pin = @getFieldValue('PIN')
490
- Blockly.Ruby.characterMethodCallInput_("sensor(#{Blockly.Ruby.quote_(pin)}).value")
500
+ lor = @getFieldValue('LOR')
501
+ Blockly.Ruby.characterMethodCallInput_("<%= subcategory %>.#{lor}_motor.speed")
491
502
 
492
- # センサー[▼PIN]が変化したとき
493
- <% n = "#{category}_on_sensor_change" %>
503
+ # set Smalrubot v3 left/right motor speed
504
+ <% n = "#{category}_#{subcategory}_motor_set_speed" %>
494
505
  Blockly.Blocks['<%= n %>'] =
495
506
  init: ()->
496
507
  @setHelpUrl('')
497
- @setColour(<%= colors[:events] %>)
498
- @interpolateMsg(<%= bm('.on_sensor_change') %>,
499
- ['PIN', ['Dropdown', aiPinDropdown], Blockly.ALIGN_RIGHT],
508
+ @setColour(<%= colors[:motion] %>)
509
+ @interpolateMsg(<%= bm(".#{subcategory}_motor_set_speed") %>,
510
+ ['LOR', ['Dropdown', lorDropdown], Blockly.ALIGN_RIGHT],
511
+ ['SPEED', ['Number'], Blockly.ALIGN_RIGHT],
500
512
  Blockly.ALIGN_RIGHT)
501
- @appendStatementInput('DO')
513
+ @setInputsInline(true)
502
514
  @setPreviousStatement(true)
503
515
  @setNextStatement(true)
504
516
  @setTooltip('')
505
517
 
506
518
  Blockly.Ruby['<%= n %>'] = (block) ->
507
- pin = @getFieldValue('PIN')
508
- Blockly.Ruby.characterEvent_(block, 'DO', 'sensor_change', Blockly.Ruby.quote_(pin))
519
+ lor = @getFieldValue('LOR')
520
+ speed = Blockly.Ruby.valueToCode(@, 'SPEED', Blockly.Ruby.ORDER_NONE) || '100'
521
+ Blockly.Ruby.characterSetVariable_("<%= subcategory %>.#{lor}_motor.speed",
522
+ speed)
523
+
524
+ # forward/backward/turn left/turn right/stop Smalrubot v3
525
+ <% n = "#{category}_#{subcategory}_action" %>
526
+ Blockly.Blocks['<%= n %>'] =
527
+ init: ()->
528
+ @setHelpUrl('')
529
+ @setColour(<%= colors[:motion] %>)
530
+ @interpolateMsg(<%= bm(".#{subcategory}_action") %>,
531
+ ['ACTION', ['Dropdown', actionDropdown], Blockly.ALIGN_RIGHT],
532
+ Blockly.ALIGN_RIGHT)
533
+ @setInputsInline(true)
534
+ @setPreviousStatement(true)
535
+ @setNextStatement(true)
536
+ @setTooltip('')
537
+
538
+ Blockly.Ruby['<%= n %>'] = (block) ->
539
+ action = @getFieldValue('ACTION')
540
+ Blockly.Ruby.characterMethodCall_("<%= subcategory %>.#{action}")
541
+
542
+ # forward/backward/turn left/turn right/stop Smalrubot v3 for ( ) secs
543
+ <% n = "#{category}_#{subcategory}_action_with_sec" %>
544
+ Blockly.Blocks['<%= n %>'] =
545
+ init: ()->
546
+ @setHelpUrl('')
547
+ @setColour(<%= colors[:motion] %>)
548
+ @interpolateMsg(<%= bm(".#{subcategory}_action_with_sec") %>,
549
+ ['ACTION', ['Dropdown', actionDropdown], Blockly.ALIGN_RIGHT],
550
+ ['SEC', ['Number'], Blockly.ALIGN_RIGHT],
551
+ Blockly.ALIGN_RIGHT)
552
+ @setInputsInline(true)
553
+ @setPreviousStatement(true)
554
+ @setNextStatement(true)
555
+ @setTooltip('')
556
+
557
+ Blockly.Ruby['<%= n %>'] = (block) ->
558
+ action = @getFieldValue('ACTION')
559
+ sec = Blockly.Ruby.valueToCode(@, 'SEC', Blockly.Ruby.ORDER_FUNCTION_CALL) || 'nil'
560
+ Blockly.Ruby.characterMethodCall_("<%= subcategory %>.#{action}(sec: #{sec})")
561
+
562
+ # Smalrubot v3 touch sensor pressed/released
563
+ <% n = "#{category}_#{subcategory}_touch_sensor_pressed_or_released" %>
564
+ Blockly.Blocks['<%= n %>'] =
565
+ init: ()->
566
+ porDropdown = window.SmalrubyEditor.Sensing.PressedOrReleasedDropdown
567
+
568
+ @setHelpUrl('')
569
+ @setColour(<%= colors[:sensing] %>)
570
+ @interpolateMsg(<%= bm(".#{subcategory}_touch_sensor_pressed_or_released") %>,
571
+ ['LOR', ['Dropdown', lorDropdown], Blockly.ALIGN_RIGHT],
572
+ ['POR', ['Dropdown', porDropdown], Blockly.ALIGN_RIGHT],
573
+ Blockly.ALIGN_RIGHT)
574
+ @setOutput(true, 'Boolean')
575
+ @setTooltip('')
576
+
577
+ Blockly.Ruby['<%= n %>'] = (block) ->
578
+ lor = @getFieldValue('LOR')
579
+ por = @getFieldValue('POR')
580
+ Blockly.Ruby.characterMethodCallInput_("<%= subcategory %>.#{lor}_touch_sensor.#{por}?")
581
+
582
+ # Smalrubot v3 light sensor value
583
+ <% n = "#{category}_#{subcategory}_light_sensor_value" %>
584
+ Blockly.Blocks['<%= n %>'] =
585
+ init: ()->
586
+ @setHelpUrl('')
587
+ @setColour(<%= colors[:sensing] %>)
588
+ @appendDummyInput().appendField(<%= bm(".#{subcategory}_light_sensor_value") %>)
589
+ @setOutput(true, 'Number')
590
+ @setTooltip('')
591
+
592
+ Blockly.Ruby['<%= n %>'] = (block) ->
593
+ Blockly.Ruby.characterMethodCallInput_("<%= subcategory %>.light_sensor.value")
@@ -33,6 +33,10 @@ $(document).ready ->
33
33
  [<%= bm('.down') %>, 'down'],
34
34
  [<%= bm('.up') %>, 'up'],
35
35
  ]
36
+ PressedOrReleasedDropdown: [
37
+ [<%= bm('.pressed') %>, 'pressed'],
38
+ [<%= bm('.released') %>, 'released'],
39
+ ]
36
40
 
37
41
  # 条件:端に触れた
38
42
  <% n = "#{category}_reach_wall" %>
@@ -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 = 'turn on';
13
+ Blockly.Msg.COMMON_TURN_OFF = 'turn off';
14
+ Blockly.Msg.COMMON_FORWARD = 'forward';
15
+ Blockly.Msg.COMMON_BACKWARD = 'backward';
16
+ Blockly.Msg.COMMON_TURN_LEFT = 'turn left';
17
+ Blockly.Msg.COMMON_TURN_RIGHT = 'turn right';
18
+ Blockly.Msg.COMMON_STOP = 'stop';
19
+
20
+
21
+ // colour name
22
+ Blockly.Msg.COLOUR_RED = 'red';
23
+ Blockly.Msg.COLOUR_GREEN = 'green';
24
+
25
+
11
26
  // views/main_menu_view.js.coffee
12
27
  Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES = ' Lines';
13
28
  Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS = ' Letters';
@@ -75,13 +90,16 @@ Blockly.Msg.BLOCKS_SENSING_K_DOWN = 'down arrow';
75
90
  Blockly.Msg.BLOCKS_SENSING_K_LEFT = 'left arrow';
76
91
  Blockly.Msg.BLOCKS_SENSING_K_RIGHT = 'right arrow';
77
92
  Blockly.Msg.BLOCKS_SENSING_K_SPACE = 'space';
78
- Blockly.Msg.BLOCKS_SENSING_PUSH = 'pressed?';
79
- Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN = 'hold pressed?';
80
- Blockly.Msg.BLOCKS_SENSING_DOWN = Blockly.Msg.BLOCKS_SENSING_PUSH;
93
+ Blockly.Msg.BLOCKS_SENSING_PRESSED = 'pressed';
94
+ Blockly.Msg.BLOCKS_SENSING_PUSH = Blockly.Msg.BLOCKS_SENSING_PRESSED;
95
+ Blockly.Msg.BLOCKS_SENSING_DOWN = Blockly.Msg.BLOCKS_SENSING_PRESSED;
96
+ Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED = 'hold pressed';
97
+ Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN = Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED;
81
98
  Blockly.Msg.BLOCKS_SENSING_M_LBUTTON = 'left-button';
82
99
  Blockly.Msg.BLOCKS_SENSING_M_MBUTTON = 'middle-button';
83
100
  Blockly.Msg.BLOCKS_SENSING_M_RBUTTON = 'right-button';
84
- Blockly.Msg.BLOCKS_SENSING_UP = 'released?';
101
+ Blockly.Msg.BLOCKS_SENSING_RELEASED = 'released';
102
+ Blockly.Msg.BLOCKS_SENSING_UP = Blockly.Msg.BLOCKS_SENSING_RELEASED;
85
103
  Blockly.Msg.BLOCKS_SENSING_REACH_WALL = 'reach wall?';
86
104
  Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX = 'key ';
87
105
  Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE = ' ';
@@ -154,15 +172,15 @@ Blockly.Msg.BLOCKS_LOOKS_HIDE = 'hide';
154
172
  Blockly.Msg.BLOCKS_LOOKS_VANISH = 'vanish';
155
173
 
156
174
  // blocks/hardware.js.coffee.erb
157
- Blockly.Msg.BLOCKS_HARDWARE_LED_ON = 'turn on LED %1';
158
- Blockly.Msg.BLOCKS_HARDWARE_LED_OFF = 'turn off LED %1';
175
+ Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_ON = 'turn on LED %1';
176
+ Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_OFF = 'turn off LED %1';
159
177
  Blockly.Msg.BLOCKS_HARDWARE_ANODE = 'anode';
160
178
  Blockly.Msg.BLOCKS_HARDWARE_CATHODE = 'cathode';
161
179
  Blockly.Msg.BLOCKS_HARDWARE_LEFT = 'left';
162
180
  Blockly.Msg.BLOCKS_HARDWARE_RIGHT = 'right';
163
181
  Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE = 'setup hardware';
164
- Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON = 'set RGB LED %1 common %2 color to %3';
165
- Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_OFF = 'turn off RGB LED %1 common %2';
182
+ Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_SET_COLOR = 'set RGB LED %1 common %2 color to %3';
183
+ Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_TURN_OFF = 'turn off RGB LED %1 common %2';
166
184
  Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW = 'show 7 segment display %1';
167
185
  Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF = 'turn off 7 segment display';
168
186
  Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS = 'display %1 on the LCD';
@@ -187,11 +205,15 @@ Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP = 'stop';
187
205
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER = "%2 (motor driver %1's) motor";
188
206
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED = "set (motor driver %1's) motor speed to %2 %";
189
207
  Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED = "(motor driver %1's) motor speed (%)";
190
- Blockly.Msg.BLOCKS_HARDWARE_BUTTON_DOWN_OR_UP = 'button %1 %2';
191
- Blockly.Msg.BLOCKS_HARDWARE_ON_BUTTON_DOWN_OR_UP = 'when button %1 %2';
192
- Blockly.Msg.BLOCKS_HARDWARE_BUTTON_NOT_USE_PULLUP = "don't use button %1's pull-up resistor";
208
+ Blockly.Msg.BLOCKS_HARDWARE_BUTTON_PRESSED_OR_RELEASED = 'button %1 %2 ?';
193
209
  Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE = 'sensor %1 value';
194
- Blockly.Msg.BLOCKS_HARDWARE_ON_SENSOR_CHANGE = 'when sensor %1 value changed';
210
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LED_TURN_ON_OR_OFF = '%2 Smalrubot v3 %1 LED';
211
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SPEED = 'Smalrubot v3 %1 motor speed';
212
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SET_SPEED = 'set Smalrubot v3 %1 motor speed to %2 %';
213
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION = '%1 Smalrubot v3';
214
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION_WITH_SEC = '%1 Smalrubot v3 for %2 secs';
215
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_TOUCH_SENSOR_PRESSED_OR_RELEASED = 'Smalrubot v3 %1 touch sensor %2 ?';
216
+ Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LIGHT_SENSOR_VALUE = 'Smalrubot v3 light sensor value';
195
217
 
196
218
 
197
219
  // blocks/operators.js.coffee.erb