smalruby-editor 0.3.5-x86-mingw32 → 0.4.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 (366) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -0
  3. data/.rspec +0 -0
  4. data/.rubocop.yml +1 -0
  5. data/.simplecov +7 -7
  6. data/.travis.yml +0 -0
  7. data/Guardfile +1 -1
  8. data/LICENSE +0 -0
  9. data/Procfile +1 -1
  10. data/Rakefile +0 -0
  11. data/app/assets/images/.keep +0 -0
  12. data/app/assets/images/favicon.ico +0 -0
  13. data/app/assets/javascripts/blocks/blockly.js.coffee.erb +0 -0
  14. data/app/assets/javascripts/blocks/character.js.coffee.erb +3 -0
  15. data/app/assets/javascripts/blocks/data.js.coffee.erb +0 -0
  16. data/app/assets/javascripts/blocks/etc.js.coffee.erb +0 -0
  17. data/app/assets/javascripts/blocks/field_character.js.coffee.erb +13 -1
  18. data/app/assets/javascripts/blocks/field_costume.js.coffee.erb +84 -0
  19. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +26 -0
  20. data/app/assets/javascripts/blocks/looks.js.coffee.erb +32 -0
  21. data/app/assets/javascripts/collections/.keep +0 -0
  22. data/app/assets/javascripts/collections/character_set.js.coffee +0 -0
  23. data/app/assets/javascripts/generators/ruby.js.coffee.erb +10 -1
  24. data/app/assets/javascripts/models/.keep +0 -0
  25. data/app/assets/javascripts/models/character.js.coffee +45 -6
  26. data/app/assets/javascripts/models/scene.js.coffee +0 -0
  27. data/app/assets/javascripts/msg/en_us.js +4 -0
  28. data/app/assets/javascripts/msg/ja.js +4 -0
  29. data/app/assets/javascripts/routers/.keep +0 -0
  30. data/app/assets/javascripts/smalruby.js.coffee.erb +5 -1
  31. data/app/assets/javascripts/views/.keep +0 -0
  32. data/app/assets/javascripts/views/character_modal_view.js.coffee.erb +357 -0
  33. data/app/assets/javascripts/views/character_selector_view.js.coffee +2 -0
  34. data/app/assets/stylesheets/editor.css.scss +201 -16
  35. data/app/assets/stylesheets/flatstrap-custom.css.scss +0 -0
  36. data/app/assets/stylesheets/load-modal.css.scss +0 -0
  37. data/app/assets/templates/.keep +0 -0
  38. data/app/controllers/application_controller.rb +8 -2
  39. data/app/controllers/concerns/.keep +0 -0
  40. data/app/controllers/costumes_controller.rb +58 -0
  41. data/app/controllers/editor_controller.rb +2 -0
  42. data/app/helpers/costumes_helper.rb +2 -0
  43. data/app/helpers/editor_helper.rb +0 -0
  44. data/app/helpers/sessions_helper.rb +0 -4
  45. data/app/mailers/.keep +0 -0
  46. data/app/models/.keep +0 -0
  47. data/app/models/concerns/.keep +0 -0
  48. data/app/models/concerns/ruby_to_block.rb +0 -0
  49. data/app/models/concerns/ruby_to_block/block.rb +0 -0
  50. data/app/models/concerns/ruby_to_block/block/base.rb +2 -0
  51. data/app/models/concerns/ruby_to_block/block/character.rb +32 -11
  52. data/app/models/concerns/ruby_to_block/block/character_event.rb +0 -0
  53. data/app/models/concerns/ruby_to_block/block/character_method_call.rb +0 -0
  54. data/app/models/concerns/ruby_to_block/block/character_new.rb +0 -0
  55. data/app/models/concerns/ruby_to_block/block/character_operation.rb +0 -0
  56. data/app/models/concerns/ruby_to_block/block/control_beark.rb +0 -0
  57. data/app/models/concerns/ruby_to_block/block/control_if.rb +0 -0
  58. data/app/models/concerns/ruby_to_block/block/control_loop.rb +0 -0
  59. data/app/models/concerns/ruby_to_block/block/control_sleep.rb +0 -0
  60. data/app/models/concerns/ruby_to_block/block/do.rb +0 -0
  61. data/app/models/concerns/ruby_to_block/block/else.rb +0 -0
  62. data/app/models/concerns/ruby_to_block/block/end.rb +0 -0
  63. data/app/models/concerns/ruby_to_block/block/events_on_click.rb +0 -0
  64. data/app/models/concerns/ruby_to_block/block/events_on_key_push_or_down.rb +0 -0
  65. data/app/models/concerns/ruby_to_block/block/events_on_start.rb +0 -0
  66. data/app/models/concerns/ruby_to_block/block/hardware_button_pressed_or_released.rb +0 -0
  67. data/app/models/concerns/ruby_to_block/block/hardware_init_hardware.rb +0 -0
  68. data/app/models/concerns/ruby_to_block/block/hardware_led_turn_off.rb +0 -0
  69. data/app/models/concerns/ruby_to_block/block/hardware_led_turn_on.rb +0 -0
  70. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver.rb +0 -0
  71. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_set_speed.rb +0 -0
  72. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_speed.rb +0 -0
  73. data/app/models/concerns/ruby_to_block/block/hardware_neo_pixel_set_rgb.rb +31 -0
  74. data/app/models/concerns/ruby_to_block/block/hardware_rgb_led_set_color.rb +0 -0
  75. data/app/models/concerns/ruby_to_block/block/hardware_rgb_led_turn_off.rb +0 -0
  76. data/app/models/concerns/ruby_to_block/block/hardware_sensor_value.rb +0 -0
  77. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car.rb +0 -0
  78. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +0 -0
  79. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_run.rb +0 -0
  80. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_set_speed.rb +0 -0
  81. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_speed.rb +0 -0
  82. data/app/models/concerns/ruby_to_block/block/looks_hide.rb +0 -0
  83. data/app/models/concerns/ruby_to_block/block/looks_next_costume.rb +12 -0
  84. data/app/models/concerns/ruby_to_block/block/looks_say.rb +0 -0
  85. data/app/models/concerns/ruby_to_block/block/looks_show.rb +0 -0
  86. data/app/models/concerns/ruby_to_block/block/looks_switch_costume.rb +22 -0
  87. data/app/models/concerns/ruby_to_block/block/looks_vanish.rb +0 -0
  88. data/app/models/concerns/ruby_to_block/block/math_number.rb +0 -0
  89. data/app/models/concerns/ruby_to_block/block/motion_change_x_by.rb +0 -0
  90. data/app/models/concerns/ruby_to_block/block/motion_change_y_by.rb +0 -0
  91. data/app/models/concerns/ruby_to_block/block/motion_go_to_character.rb +0 -0
  92. data/app/models/concerns/ruby_to_block/block/motion_go_to_mouse.rb +0 -0
  93. data/app/models/concerns/ruby_to_block/block/motion_move.rb +0 -0
  94. data/app/models/concerns/ruby_to_block/block/motion_point_towards_character.rb +0 -0
  95. data/app/models/concerns/ruby_to_block/block/motion_point_towards_mouse.rb +0 -0
  96. data/app/models/concerns/ruby_to_block/block/motion_rotate_left.rb +0 -0
  97. data/app/models/concerns/ruby_to_block/block/motion_rotate_right.rb +0 -0
  98. data/app/models/concerns/ruby_to_block/block/motion_self_angle.rb +0 -0
  99. data/app/models/concerns/ruby_to_block/block/motion_self_x.rb +0 -0
  100. data/app/models/concerns/ruby_to_block/block/motion_self_y.rb +0 -0
  101. data/app/models/concerns/ruby_to_block/block/motion_set_angle.rb +0 -0
  102. data/app/models/concerns/ruby_to_block/block/motion_set_x.rb +0 -0
  103. data/app/models/concerns/ruby_to_block/block/motion_set_x_y.rb +0 -0
  104. data/app/models/concerns/ruby_to_block/block/motion_set_y.rb +0 -0
  105. data/app/models/concerns/ruby_to_block/block/motion_turn.rb +0 -0
  106. data/app/models/concerns/ruby_to_block/block/motion_turn_if_reach_wall.rb +0 -0
  107. data/app/models/concerns/ruby_to_block/block/motion_turn_xy.rb +0 -0
  108. data/app/models/concerns/ruby_to_block/block/null.rb +0 -0
  109. data/app/models/concerns/ruby_to_block/block/operators_compare.rb +0 -0
  110. data/app/models/concerns/ruby_to_block/block/operators_false.rb +0 -0
  111. data/app/models/concerns/ruby_to_block/block/operators_true.rb +0 -0
  112. data/app/models/concerns/ruby_to_block/block/require_smalruby.rb +0 -0
  113. data/app/models/concerns/ruby_to_block/block/ruby_comment.rb +0 -0
  114. data/app/models/concerns/ruby_to_block/block/ruby_expression.rb +0 -0
  115. data/app/models/concerns/ruby_to_block/block/ruby_p.rb +0 -0
  116. data/app/models/concerns/ruby_to_block/block/ruby_statement.rb +0 -0
  117. data/app/models/concerns/ruby_to_block/block/sensing_hit.rb +0 -0
  118. data/app/models/concerns/ruby_to_block/block/sensing_reach_wall.rb +0 -0
  119. data/app/models/concerns/ruby_to_block/block/sound_play.rb +0 -0
  120. data/app/models/concerns/ruby_to_block/block/sound_preset_sounds.rb +0 -0
  121. data/app/models/concerns/ruby_to_block/block/text.rb +0 -0
  122. data/app/models/concerns/ruby_to_block/block/value.rb +0 -0
  123. data/app/models/concerns/ruby_to_block/context.rb +0 -0
  124. data/app/models/concerns/ruby_to_block/formatter.rb +0 -0
  125. data/app/models/costume.rb +67 -0
  126. data/app/models/source_code.rb +9 -1
  127. data/app/models/user.rb +7 -0
  128. data/app/views/costumes/index.html.haml +19 -0
  129. data/app/views/editor/_character_modal.html.haml +35 -7
  130. data/app/views/editor/_toolbox_default.html.haml +9 -0
  131. data/app/views/editor/demo.html.erb +0 -0
  132. data/app/views/editor/index.html.haml +1 -0
  133. data/bin/smalruby-editor +1 -0
  134. data/bin/spring +7 -9
  135. data/config.ru +0 -0
  136. data/config/boot.rb +0 -0
  137. data/config/database.yml.mysql2 +0 -0
  138. data/config/database.yml.sqlite3 +0 -0
  139. data/config/database.yml.travis +0 -0
  140. data/config/environment.rb +0 -0
  141. data/config/environments/development.rb +0 -0
  142. data/config/environments/production.rb +0 -0
  143. data/config/environments/standalone.rb +0 -0
  144. data/config/environments/test.rb +0 -0
  145. data/config/initializers/backtrace_silencers.rb +0 -0
  146. data/config/initializers/filter_parameter_logging.rb +0 -0
  147. data/config/initializers/inflections.rb +0 -0
  148. data/config/initializers/mime_types.rb +0 -0
  149. data/config/initializers/secret_token.rb +0 -0
  150. data/config/initializers/session_store.rb +0 -0
  151. data/config/initializers/teaspoon.rb +0 -0
  152. data/config/initializers/wrap_parameters.rb +0 -0
  153. data/config/locales/en.yml +10 -1
  154. data/config/locales/ja.yml +10 -0
  155. data/config/routes.rb +2 -0
  156. data/config/unicorn.rb +23 -23
  157. data/db/migrate/20131216121603_create_source_codes.rb +0 -0
  158. data/db/migrate/20131219045113_add_filename_to_source_code.rb +0 -0
  159. data/db/migrate/20150513061250_add_index_name_on_users.rb +1 -1
  160. data/db/migrate/20150607012053_create_costumes.rb +12 -0
  161. data/db/migrate/20150607012707_add_indexes_on_costumes.rb +13 -0
  162. data/db/migrate/20150607034013_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
  163. data/db/migrate/20150607034014_add_missing_unique_indices.acts_as_taggable_on_engine.rb +21 -0
  164. data/db/migrate/20150607034015_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +15 -0
  165. data/db/migrate/20150607034016_add_missing_taggable_index.acts_as_taggable_on_engine.rb +10 -0
  166. data/db/migrate/20150607034017_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +12 -0
  167. data/db/migrate/20150607034018_insert_preset_costumes.rb +9 -0
  168. data/db/schema.rb +35 -2
  169. data/db/seeds.rb +2 -0
  170. data/demos/car_chase.rb.xml +128 -128
  171. data/demos/pong.rb.xml +379 -379
  172. data/demos/star.rb.xml +115 -115
  173. data/lib/assets/.keep +0 -0
  174. data/lib/smalruby_editor/version.rb +1 -1
  175. data/lib/tasks/.keep +0 -0
  176. data/lib/tasks/gem.rake +0 -0
  177. data/lib/tasks/rspec.rake +0 -0
  178. data/lib/tasks/rubocop.rake +0 -0
  179. data/log/.keep +0 -0
  180. data/public/404.html +0 -0
  181. data/public/422.html +0 -0
  182. data/public/500.html +0 -0
  183. data/public/apple-touch-icon.png +0 -0
  184. data/public/blockly/media/1x1.gif +0 -0
  185. data/public/blockly/media/click.mp3 +0 -0
  186. data/public/blockly/media/click.ogg +0 -0
  187. data/public/blockly/media/click.wav +0 -0
  188. data/public/blockly/media/delete.mp3 +0 -0
  189. data/public/blockly/media/delete.ogg +0 -0
  190. data/public/blockly/media/delete.wav +0 -0
  191. data/public/blockly/media/handopen.cur +0 -0
  192. data/public/blockly/media/quote0.png +0 -0
  193. data/public/blockly/media/quote1.png +0 -0
  194. data/public/browserconfig.xml +0 -0
  195. data/public/fonts/FontAwesome.otf +0 -0
  196. data/public/fonts/fontawesome-webfont.eot +0 -0
  197. data/public/fonts/fontawesome-webfont.ttf +0 -0
  198. data/public/fonts/fontawesome-webfont.woff +0 -0
  199. data/public/large.png +0 -0
  200. data/public/robots.txt +0 -0
  201. data/public/smalruby/assets/ball1.png +0 -0
  202. data/public/smalruby/assets/ball2.png +0 -0
  203. data/public/smalruby/assets/ball3.png +0 -0
  204. data/public/smalruby/assets/ball4.png +0 -0
  205. data/public/smalruby/assets/ball5.png +0 -0
  206. data/public/smalruby/assets/ball6.png +0 -0
  207. data/public/smalruby/assets/car1.png +0 -0
  208. data/public/smalruby/assets/car2.png +0 -0
  209. data/public/smalruby/assets/car3.png +0 -0
  210. data/public/smalruby/assets/car4.png +0 -0
  211. data/public/smalruby/assets/cat1.png +0 -0
  212. data/public/smalruby/assets/cat2.png +0 -0
  213. data/public/smalruby/assets/cat3.png +0 -0
  214. data/public/smalruby/assets/frog1.png +0 -0
  215. data/public/smalruby/assets/piano_do.wav +0 -0
  216. data/public/smalruby/assets/piano_do_2.wav +0 -0
  217. data/public/smalruby/assets/piano_fa.wav +0 -0
  218. data/public/smalruby/assets/piano_mi.wav +0 -0
  219. data/public/smalruby/assets/piano_ra.wav +0 -0
  220. data/public/smalruby/assets/piano_re.wav +0 -0
  221. data/public/smalruby/assets/piano_si.wav +0 -0
  222. data/public/smalruby/assets/piano_so.wav +0 -0
  223. data/public/smalruby/assets/ryu1.png +0 -0
  224. data/public/smalruby/assets/ryu2.png +0 -0
  225. data/public/smalruby/assets/taichi1.png +0 -0
  226. data/public/smalruby/assets/taichi2.png +0 -0
  227. data/public/square.png +0 -0
  228. data/public/tiny.png +0 -0
  229. data/public/wide.png +0 -0
  230. data/smalruby-editor.gemspec +2 -1
  231. data/spec/acceptance/block_mode/blocks/character/new.feature +5 -5
  232. data/spec/acceptance/block_mode/blocks/control/await.feature +2 -2
  233. data/spec/acceptance/block_mode/blocks/control/await_until.feature +3 -3
  234. data/spec/acceptance/block_mode/blocks/control/break.feature +0 -0
  235. data/spec/acceptance/block_mode/blocks/control/if.feature +0 -0
  236. data/spec/acceptance/block_mode/blocks/control/if_else.feature +0 -0
  237. data/spec/acceptance/block_mode/blocks/control/loop.feature +0 -0
  238. data/spec/acceptance/block_mode/blocks/control/next.feature +0 -0
  239. data/spec/acceptance/block_mode/blocks/control/redo.feature +0 -0
  240. data/spec/acceptance/block_mode/blocks/control/sleep.feature +0 -0
  241. data/spec/acceptance/block_mode/blocks/control/times.feature +0 -0
  242. data/spec/acceptance/block_mode/blocks/control/until.feature +0 -0
  243. data/spec/acceptance/block_mode/blocks/events/on_click.feature +2 -2
  244. data/spec/acceptance/block_mode/blocks/events/on_hit.feature +4 -4
  245. data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +4 -4
  246. data/spec/acceptance/block_mode/blocks/events/on_start.feature +2 -2
  247. data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +1 -1
  248. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +2 -2
  249. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +2 -2
  250. data/spec/acceptance/block_mode/blocks/hardware/motor_driver.feature +0 -0
  251. data/spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature +0 -0
  252. data/spec/acceptance/block_mode/blocks/hardware/neo_pixel_set_rgb.feature +100 -0
  253. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +0 -0
  254. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature +0 -0
  255. data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +0 -0
  256. data/spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature +0 -0
  257. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action_with_sec.feature +1 -1
  258. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_led_turn_on_or_off.feature +1 -1
  259. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +1 -1
  260. data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature +0 -0
  261. data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature +0 -0
  262. data/spec/acceptance/block_mode/blocks/looks/hide.feature +2 -2
  263. data/spec/acceptance/block_mode/blocks/looks/next_costume.feature +56 -0
  264. data/spec/acceptance/block_mode/blocks/looks/say.feature +3 -3
  265. data/spec/acceptance/block_mode/blocks/looks/show.feature +2 -2
  266. data/spec/acceptance/block_mode/blocks/looks/vanish.feature +2 -2
  267. data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +2 -2
  268. data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +2 -2
  269. data/spec/acceptance/block_mode/blocks/motion/move.feature +2 -2
  270. data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +2 -2
  271. data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +2 -2
  272. data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +2 -2
  273. data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +2 -2
  274. data/spec/acceptance/block_mode/blocks/motion/self_x.feature +2 -2
  275. data/spec/acceptance/block_mode/blocks/motion/self_y.feature +2 -2
  276. data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +2 -2
  277. data/spec/acceptance/block_mode/blocks/motion/set_x.feature +2 -2
  278. data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +2 -2
  279. data/spec/acceptance/block_mode/blocks/motion/set_y.feature +2 -2
  280. data/spec/acceptance/block_mode/blocks/motion/turn.feature +2 -2
  281. data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +2 -2
  282. data/spec/acceptance/block_mode/blocks/operators/and_or.feature +0 -0
  283. data/spec/acceptance/block_mode/blocks/operators/four_arithmetic_and_compares.feature +0 -0
  284. data/spec/acceptance/block_mode/blocks/operators/index_of.feature +0 -0
  285. data/spec/acceptance/block_mode/blocks/operators/length.feature +0 -0
  286. data/spec/acceptance/block_mode/blocks/operators/math_method.feature +0 -0
  287. data/spec/acceptance/block_mode/blocks/operators/negate.feature +0 -0
  288. data/spec/acceptance/block_mode/blocks/operators/rand.feature +0 -0
  289. data/spec/acceptance/block_mode/blocks/operators/round.feature +0 -0
  290. data/spec/acceptance/block_mode/blocks/operators/text.feature +0 -0
  291. data/spec/acceptance/block_mode/blocks/operators/true_false.feature +0 -0
  292. data/spec/acceptance/block_mode/blocks/ruby/expression.feature +0 -0
  293. data/spec/acceptance/block_mode/blocks/ruby/p.feature +0 -0
  294. data/spec/acceptance/block_mode/blocks/ruby/statement_comment.feature +0 -0
  295. data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +2 -2
  296. data/spec/acceptance/block_mode/blocks/sensing/hit.feature +6 -6
  297. data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +0 -0
  298. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +0 -0
  299. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +0 -0
  300. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +0 -0
  301. data/spec/acceptance/block_mode/blocks/sensing/reach_wall.feature +2 -2
  302. data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +0 -0
  303. data/spec/acceptance/block_mode/blocks/sound/play.feature +2 -2
  304. data/spec/acceptance/block_mode/character_modal_view.feature +164 -0
  305. data/spec/acceptance/block_mode/demo.feature +2 -2
  306. data/spec/acceptance/block_mode/translate.feature +0 -0
  307. data/spec/acceptance/readme.md +0 -0
  308. data/spec/acceptance/ruby_mode/check.feature +0 -0
  309. data/spec/acceptance/ruby_mode/load.feature +0 -0
  310. data/spec/acceptance/ruby_mode/translate.feature +2 -2
  311. data/spec/acceptance/standalone/preference.feature +8 -8
  312. data/spec/acceptance/standalone/run.feature +0 -0
  313. data/spec/acceptance/standalone/save.feature +1 -1
  314. data/spec/acceptance/standalone/signin.feature +1 -1
  315. data/spec/controllers/source_codes_controller_spec.rb +0 -0
  316. data/spec/fixtures/files/01.rb +0 -0
  317. data/spec/fixtures/files/01.rb.xml +0 -0
  318. data/spec/fixtures/files/01_remix.rb +0 -0
  319. data/spec/fixtures/files/01_remix02.rb +0 -0
  320. data/spec/fixtures/files/01_remix10.rb.xml +0 -0
  321. data/spec/fixtures/files/extra_car.png +0 -0
  322. data/spec/fixtures/files/favicon.ico +0 -0
  323. data/spec/helpers/editor_helper_spec.rb +0 -0
  324. data/spec/javascripts/collections/character_set_spec.coffee +0 -0
  325. data/spec/javascripts/models/character_spec.coffee +2 -14
  326. data/spec/javascripts/models/scene_spec.coffee +0 -0
  327. data/spec/javascripts/spec_helper.js +0 -0
  328. data/spec/lib/smalruby_editor_spec.rb +0 -0
  329. data/spec/models/concerns/ruby_to_block/block/character_method_call_spec.rb +0 -0
  330. data/spec/models/concerns/ruby_to_block/block/character_spec.rb +71 -0
  331. data/spec/models/concerns/ruby_to_block/block/control_if_spec.rb +0 -0
  332. data/spec/models/concerns/ruby_to_block/block/control_loop_spec.rb +0 -0
  333. data/spec/models/concerns/ruby_to_block/block/events_on_start_spec.rb +6 -6
  334. data/spec/models/concerns/ruby_to_block/block/hardware__neo_pixel_spec.rb +77 -0
  335. data/spec/models/concerns/ruby_to_block/block/looks_say_spec.rb +0 -0
  336. data/spec/models/concerns/ruby_to_block/block/looks_spec.rb +26 -2
  337. data/spec/models/concerns/ruby_to_block/block/motion_move_spec.rb +0 -0
  338. data/spec/models/concerns/ruby_to_block/block/motion_spec.rb +0 -0
  339. data/spec/models/concerns/ruby_to_block/block/motion_turn_spec.rb +0 -0
  340. data/spec/models/concerns/ruby_to_block/block/motion_turn_xy_spec.rb +0 -0
  341. data/spec/models/concerns/ruby_to_block/block/require_smalruby_spec.rb +0 -0
  342. data/spec/models/concerns/ruby_to_block/block/ruby_comment_spec.rb +0 -0
  343. data/spec/models/concerns/ruby_to_block/block/ruby_statement_spec.rb +0 -0
  344. data/spec/models/concerns/ruby_to_block/block/sensing_reach_wall_spec.rb +0 -0
  345. data/spec/models/concerns/ruby_to_block/block/shared/block_examples.rb +2 -2
  346. data/spec/models/concerns/ruby_to_block/block/sound_spec.rb +0 -0
  347. data/spec/models/concerns/ruby_to_block/block/text_spec.rb +0 -0
  348. data/spec/models/concerns/ruby_to_block/block_spec.rb +0 -0
  349. data/spec/models/concerns/ruby_to_block_spec.rb +0 -0
  350. data/spec/spec_helper.rb +21 -10
  351. data/spec/steps/block_mode_steps.rb +0 -0
  352. data/spec/steps/fix_turnip.rb +0 -0
  353. data/spec/steps/global_variable.rb +0 -0
  354. data/spec/steps/standalone_steps.rb +3 -3
  355. data/spec/steps/then_steps.rb +28 -0
  356. data/spec/steps/when_steps.rb +15 -18
  357. data/spec/support/capybara.rb +0 -0
  358. data/spec/support/env.rb +0 -0
  359. data/spec/support/ruby_to_block.rb +0 -0
  360. data/spec/teaspoon_env.rb +0 -0
  361. data/spec/turnip_helper.rb +0 -0
  362. data/vendor/assets/javascripts/.keep +0 -0
  363. data/vendor/assets/javascripts/jquery.blockUI.js +0 -0
  364. data/vendor/assets/stylesheets/.keep +0 -0
  365. metadata +56 -14
  366. data/app/assets/javascripts/views/character_modal_view.js.coffee +0 -194
@@ -94,22 +94,14 @@ RSpec.configure do |config|
94
94
  }
95
95
  end
96
96
 
97
+ Capybara.asset_host = "http://localhost:3000"
98
+
97
99
  config.include JsonSpec::Helpers
98
100
  config.include ERB::Util, type: :helper
99
101
  config.include ERB::Util, type: :feature
100
102
  config.include ActionView::Helpers::JavaScriptHelper, type: :feature
101
103
  config.include FeatureHelper, type: :feature
102
104
 
103
- config.before(:each) do
104
- Preference.user_defaults.each do |key, value|
105
- Preference[key] = value
106
- end
107
- Preference.admin_defaults.each do |key, value|
108
- Preference[key] = value
109
- end
110
- Preference["disabled_add_character_from_beginning"] = true
111
- end
112
-
113
105
  config.after(javascript: true) do
114
106
  page.execute_script('window.onbeforeunload = null')
115
107
  FileUtils.rm_rf(downloads_dir) if selenium?
@@ -136,7 +128,26 @@ RSpec.configure do |config|
136
128
  DatabaseRewinder.clean_all
137
129
  end
138
130
 
131
+ config.before(:each) do
132
+ Preference.user_defaults.each do |key, value|
133
+ Preference[key] = value
134
+ end
135
+ Preference.admin_defaults.each do |key, value|
136
+ Preference[key] = value
137
+ end
138
+ Preference["disabled_add_character_from_beginning"] = true
139
+
140
+ load(Rails.root.join("db/seeds.rb"))
141
+ end
142
+
139
143
  config.after :each do
140
144
  DatabaseRewinder.clean
141
145
  end
146
+
147
+ # for debug
148
+ config.after(:each, javascript: true, open_on_error: true) do
149
+ if example.exception.present?
150
+ save_and_open_page
151
+ end
152
+ end
142
153
  end
File without changes
File without changes
File without changes
@@ -1,10 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  step ":name としてログインする" do |name|
4
- step %{"signin-button" をクリックする}
4
+ step %{"#signin-button" をクリックする}
5
5
  step %{JavaScriptによるアニメーションが終わるまで待つ}
6
6
  step %{"signin-modal-username" に "#{name}" を指定する}
7
- step %{"signin-modal-ok-button" をクリックする}
7
+ step %{"#signin-modal-ok-button" をクリックする}
8
8
  step %{JavaScriptによるリクエストが終わるまで待つ}
9
9
  step %{JavaScriptによるアニメーションが終わるまで待つ}
10
10
  end
@@ -14,7 +14,7 @@ step "ログインする" do
14
14
  end
15
15
 
16
16
  step "ログアウトする" do
17
- step %{"submenu-button" をクリックする}
17
+ step %{"#submenu-button" をクリックする}
18
18
  step %{サブメニューの "#signout-button" をクリックする}
19
19
  step %{JavaScriptによるリクエストが終わるまで待つ}
20
20
  step %{"#main-menu" に "ログイン" を含むこと}
@@ -20,6 +20,34 @@ step ':parent に :name が表示されていないこと' do |parent, name|
20
20
  end
21
21
  end
22
22
 
23
+ step ':parent に次の要素が表示されていること:' do |parent, table|
24
+ within(name_to(parent)) do
25
+ table.hashes.each do |h|
26
+ expect(page.all(name_to(h["selecter"]), visible: true)).not_to be_empty
27
+ end
28
+ end
29
+ end
30
+
31
+ step ':parent に次の要素が表示されていないこと:' do |parent, table|
32
+ within(name_to(parent)) do
33
+ table.hashes.each do |h|
34
+ expect(page.all(name_to(h["selecter"]), visible: true)).to be_empty
35
+ end
36
+ end
37
+ end
38
+
39
+ step ':parent に文字 :text が表示されていること' do |parent, text|
40
+ within(name_to(parent)) do
41
+ expect(page).to have_content(text)
42
+ end
43
+ end
44
+
45
+ step ':parent に文字 :text が表示されていないこと' do |parent, text|
46
+ within(name_to(parent)) do
47
+ expect(page).not_to have_content(text)
48
+ end
49
+ end
50
+
23
51
  step 'コンボボックス :name の :option_label を選択していること' do
24
52
  |name, option_label|
25
53
  expect(find(%{select[name="#{name}"] option[selected]}).text)
@@ -57,17 +57,17 @@ step 'プログラムの名前に :filename を指定する' do |filename|
57
57
  step %("プログラム名の入力欄" に "#{filename}" を指定する)
58
58
  end
59
59
 
60
- step 'サブメニューの :name をクリックする' do |name|
60
+ step ':selector をクリックする' do |selector|
61
61
  # HACK: 以下では期待通りの動作にならなかったのでjQueryで無理やり実現した
62
62
  # click_on('submenu-button')
63
63
  # click_on(name_to(name, :id))
64
- page.execute_script("$('#{name_to(name)}').click()")
65
- step %{JavaScriptによるリクエストが終わるまで待つ}
66
- step %{JavaScriptによるアニメーションが終わるまで待つ}
64
+ page.execute_script("$('#{name_to(selector)}').click()")
67
65
  end
68
66
 
69
- step ':name をクリックする' do |name|
70
- click_on(name_to(name, :id))
67
+ step 'サブメニューの :selector をクリックする' do |selector|
68
+ step %{"#{selector}" をクリックする}
69
+ step %{JavaScriptによるリクエストが終わるまで待つ}
70
+ step %{JavaScriptによるアニメーションが終わるまで待つ}
71
71
  end
72
72
 
73
73
  step 'ダウンロードが完了するまで待つ' do
@@ -88,16 +88,19 @@ step ':name にフォーカスを移す' do |name|
88
88
  JS
89
89
  end
90
90
 
91
- step ':filename をロードする' do |filename|
92
- step '"ロードボタン" にフォーカスを移す'
93
-
91
+ step ':field フィールドにファイル :filename を設定する' do |field, filename|
94
92
  # HACK: input#load-file[type="file"]は非表示要素であるため、.show()し
95
93
  # ないと見つけられずattach_fileが失敗する
96
- page.execute_script("$('#load-file').show()")
94
+ page.execute_script("$('##{field}').show()")
97
95
 
98
96
  path = Pathname(fixture_path).join(filename).to_s
99
97
  path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if windows?
100
- attach_file('load-file', path)
98
+ attach_file(field, path)
99
+ end
100
+
101
+ step ':filename をロードする' do |filename|
102
+ step '"ロードボタン" にフォーカスを移す'
103
+ step %{'load-file' フィールドにファイル '#{filename}' を設定する}
101
104
  end
102
105
 
103
106
  step 'ページをリロードする' do
@@ -199,11 +202,5 @@ end
199
202
  # rubocop:enable Eval
200
203
 
201
204
  step 'ページを表示する' do
202
- # no-op
203
- end
204
-
205
- steps_for :debug do
206
- step 'ページを表示する' do
207
- save_and_open_page
208
- end
205
+ save_and_open_page
209
206
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smalruby-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Kouji Takao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-05 00:00:00.000000000 Z
11
+ date: 2015-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -192,20 +192,34 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: acts-as-taggable-on
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '3.4'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '3.4'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: smalruby
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - "~>"
200
214
  - !ruby/object:Gem::Version
201
- version: 0.1.8
215
+ version: 0.1.10
202
216
  type: :runtime
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
- version: 0.1.8
222
+ version: 0.1.10
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: bundler
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +282,7 @@ files:
268
282
  - app/assets/javascripts/blocks/etc.js.coffee.erb
269
283
  - app/assets/javascripts/blocks/events.js.coffee.erb
270
284
  - app/assets/javascripts/blocks/field_character.js.coffee.erb
285
+ - app/assets/javascripts/blocks/field_costume.js.coffee.erb
271
286
  - app/assets/javascripts/blocks/hardware.js.coffee.erb
272
287
  - app/assets/javascripts/blocks/looks.js.coffee.erb
273
288
  - app/assets/javascripts/blocks/motion.js.coffee.erb
@@ -289,7 +304,7 @@ files:
289
304
  - app/assets/javascripts/routers/.keep
290
305
  - app/assets/javascripts/smalruby.js.coffee.erb
291
306
  - app/assets/javascripts/views/.keep
292
- - app/assets/javascripts/views/character_modal_view.js.coffee
307
+ - app/assets/javascripts/views/character_modal_view.js.coffee.erb
293
308
  - app/assets/javascripts/views/character_selector_view.js.coffee
294
309
  - app/assets/javascripts/views/load_modal_view.js.coffee.erb
295
310
  - app/assets/javascripts/views/main_menu_view.js.coffee.erb
@@ -305,11 +320,13 @@ files:
305
320
  - app/assets/templates/.keep
306
321
  - app/controllers/application_controller.rb
307
322
  - app/controllers/concerns/.keep
323
+ - app/controllers/costumes_controller.rb
308
324
  - app/controllers/editor_controller.rb
309
325
  - app/controllers/sessions_controller.rb
310
326
  - app/controllers/source_codes_controller.rb
311
327
  - app/controllers/users_controller.rb
312
328
  - app/helpers/application_helper.rb
329
+ - app/helpers/costumes_helper.rb
313
330
  - app/helpers/editor_helper.rb
314
331
  - app/helpers/sessions_helper.rb
315
332
  - app/helpers/users_helper.rb
@@ -341,6 +358,7 @@ files:
341
358
  - app/models/concerns/ruby_to_block/block/hardware_motor_driver.rb
342
359
  - app/models/concerns/ruby_to_block/block/hardware_motor_driver_set_speed.rb
343
360
  - app/models/concerns/ruby_to_block/block/hardware_motor_driver_speed.rb
361
+ - app/models/concerns/ruby_to_block/block/hardware_neo_pixel_set_rgb.rb
344
362
  - app/models/concerns/ruby_to_block/block/hardware_operation.rb
345
363
  - app/models/concerns/ruby_to_block/block/hardware_rgb_led_set_color.rb
346
364
  - app/models/concerns/ruby_to_block/block/hardware_rgb_led_turn_off.rb
@@ -357,8 +375,10 @@ files:
357
375
  - app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_set_speed.rb
358
376
  - app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_speed.rb
359
377
  - app/models/concerns/ruby_to_block/block/looks_hide.rb
378
+ - app/models/concerns/ruby_to_block/block/looks_next_costume.rb
360
379
  - app/models/concerns/ruby_to_block/block/looks_say.rb
361
380
  - app/models/concerns/ruby_to_block/block/looks_show.rb
381
+ - app/models/concerns/ruby_to_block/block/looks_switch_costume.rb
362
382
  - app/models/concerns/ruby_to_block/block/looks_vanish.rb
363
383
  - app/models/concerns/ruby_to_block/block/math_number.rb
364
384
  - app/models/concerns/ruby_to_block/block/motion_change_x_by.rb
@@ -398,9 +418,11 @@ files:
398
418
  - app/models/concerns/ruby_to_block/block/value.rb
399
419
  - app/models/concerns/ruby_to_block/context.rb
400
420
  - app/models/concerns/ruby_to_block/formatter.rb
421
+ - app/models/costume.rb
401
422
  - app/models/preference.rb
402
423
  - app/models/source_code.rb
403
424
  - app/models/user.rb
425
+ - app/views/costumes/index.html.haml
404
426
  - app/views/editor/_block_tab.html.haml
405
427
  - app/views/editor/_character_modal.html.haml
406
428
  - app/views/editor/_load_modal.html.haml
@@ -450,6 +472,14 @@ files:
450
472
  - db/migrate/20131219045113_add_filename_to_source_code.rb
451
473
  - db/migrate/20150513061200_create_users.rb
452
474
  - db/migrate/20150513061250_add_index_name_on_users.rb
475
+ - db/migrate/20150607012053_create_costumes.rb
476
+ - db/migrate/20150607012707_add_indexes_on_costumes.rb
477
+ - db/migrate/20150607034013_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb
478
+ - db/migrate/20150607034014_add_missing_unique_indices.acts_as_taggable_on_engine.rb
479
+ - db/migrate/20150607034015_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
480
+ - db/migrate/20150607034016_add_missing_taggable_index.acts_as_taggable_on_engine.rb
481
+ - db/migrate/20150607034017_change_collation_for_tag_names.acts_as_taggable_on_engine.rb
482
+ - db/migrate/20150607034018_insert_preset_costumes.rb
453
483
  - db/schema.rb
454
484
  - db/seeds.rb
455
485
  - demos/car_chase.rb.xml
@@ -469,10 +499,10 @@ files:
469
499
  - public/422.html
470
500
  - public/500.html
471
501
  - public/apple-touch-icon.png
472
- - public/assets/application-f411d2bebfcc93a4e8ac20b19af2fafd.js
473
- - public/assets/application-f411d2bebfcc93a4e8ac20b19af2fafd.js.gz
474
- - public/assets/application-f879948b97a781e3d996535a2a0585fa.css
475
- - public/assets/application-f879948b97a781e3d996535a2a0585fa.css.gz
502
+ - public/assets/application-01ea22bf031b73863715417bd68b9cfa.css
503
+ - public/assets/application-01ea22bf031b73863715417bd68b9cfa.css.gz
504
+ - public/assets/application-10e7350b7f8e32535d954c6a53e6b2ff.js
505
+ - public/assets/application-10e7350b7f8e32535d954c6a53e6b2ff.js.gz
476
506
  - public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js
477
507
  - public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js.gz
478
508
  - public/assets/blockly/msg/js/ja-16b694632120c3d1ace214702c6ea413.js
@@ -493,11 +523,11 @@ files:
493
523
  - public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
494
524
  - public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
495
525
  - public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
496
- - public/assets/manifest-514520c20d8e98306b1bb2d0437f7575.json
497
- - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js
498
- - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js.gz
499
- - public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js
500
- - public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js.gz
526
+ - public/assets/manifest-013a6df7ca7443586ce9a3614a33dd39.json
527
+ - public/assets/msg/en_us-e54bdd84fc120684bed3fa16e2d3d7fa.js
528
+ - public/assets/msg/en_us-e54bdd84fc120684bed3fa16e2d3d7fa.js.gz
529
+ - public/assets/msg/ja-ada4923ec8028047541796bf2f31dd1c.js
530
+ - public/assets/msg/ja-ada4923ec8028047541796bf2f31dd1c.js.gz
501
531
  - public/assets/progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif
502
532
  - public/blockly/media/1x1.gif
503
533
  - public/blockly/media/anon.jpeg
@@ -574,6 +604,7 @@ files:
574
604
  - spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature
575
605
  - spec/acceptance/block_mode/blocks/hardware/motor_driver.feature
576
606
  - spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature
607
+ - spec/acceptance/block_mode/blocks/hardware/neo_pixel_set_rgb.feature
577
608
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature
578
609
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature
579
610
  - spec/acceptance/block_mode/blocks/hardware/sensor_value.feature
@@ -590,6 +621,7 @@ files:
590
621
  - spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature
591
622
  - spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature
592
623
  - spec/acceptance/block_mode/blocks/looks/hide.feature
624
+ - spec/acceptance/block_mode/blocks/looks/next_costume.feature
593
625
  - spec/acceptance/block_mode/blocks/looks/say.feature
594
626
  - spec/acceptance/block_mode/blocks/looks/show.feature
595
627
  - spec/acceptance/block_mode/blocks/looks/vanish.feature
@@ -630,6 +662,7 @@ files:
630
662
  - spec/acceptance/block_mode/blocks/sensing/reach_wall.feature
631
663
  - spec/acceptance/block_mode/blocks/sensing/time_now.feature
632
664
  - spec/acceptance/block_mode/blocks/sound/play.feature
665
+ - spec/acceptance/block_mode/character_modal_view.feature
633
666
  - spec/acceptance/block_mode/demo.feature
634
667
  - spec/acceptance/block_mode/translate.feature
635
668
  - spec/acceptance/readme.md
@@ -647,6 +680,7 @@ files:
647
680
  - spec/fixtures/files/01_remix.rb
648
681
  - spec/fixtures/files/01_remix02.rb
649
682
  - spec/fixtures/files/01_remix10.rb.xml
683
+ - spec/fixtures/files/extra_car.png
650
684
  - spec/fixtures/files/favicon.ico
651
685
  - spec/fixtures/files/hardware_led.rb.xml
652
686
  - spec/helpers/editor_helper_spec.rb
@@ -657,9 +691,11 @@ files:
657
691
  - spec/javascripts/spec_helper.js
658
692
  - spec/lib/smalruby_editor_spec.rb
659
693
  - spec/models/concerns/ruby_to_block/block/character_method_call_spec.rb
694
+ - spec/models/concerns/ruby_to_block/block/character_spec.rb
660
695
  - spec/models/concerns/ruby_to_block/block/control_if_spec.rb
661
696
  - spec/models/concerns/ruby_to_block/block/control_loop_spec.rb
662
697
  - spec/models/concerns/ruby_to_block/block/events_on_start_spec.rb
698
+ - spec/models/concerns/ruby_to_block/block/hardware__neo_pixel_spec.rb
663
699
  - spec/models/concerns/ruby_to_block/block/hardware__smalrubot_spec.rb
664
700
  - spec/models/concerns/ruby_to_block/block/hardware_spec.rb
665
701
  - spec/models/concerns/ruby_to_block/block/looks_say_spec.rb
@@ -753,6 +789,7 @@ test_files:
753
789
  - spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature
754
790
  - spec/acceptance/block_mode/blocks/hardware/motor_driver.feature
755
791
  - spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature
792
+ - spec/acceptance/block_mode/blocks/hardware/neo_pixel_set_rgb.feature
756
793
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature
757
794
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature
758
795
  - spec/acceptance/block_mode/blocks/hardware/sensor_value.feature
@@ -769,6 +806,7 @@ test_files:
769
806
  - spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature
770
807
  - spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature
771
808
  - spec/acceptance/block_mode/blocks/looks/hide.feature
809
+ - spec/acceptance/block_mode/blocks/looks/next_costume.feature
772
810
  - spec/acceptance/block_mode/blocks/looks/say.feature
773
811
  - spec/acceptance/block_mode/blocks/looks/show.feature
774
812
  - spec/acceptance/block_mode/blocks/looks/vanish.feature
@@ -809,6 +847,7 @@ test_files:
809
847
  - spec/acceptance/block_mode/blocks/sensing/reach_wall.feature
810
848
  - spec/acceptance/block_mode/blocks/sensing/time_now.feature
811
849
  - spec/acceptance/block_mode/blocks/sound/play.feature
850
+ - spec/acceptance/block_mode/character_modal_view.feature
812
851
  - spec/acceptance/block_mode/demo.feature
813
852
  - spec/acceptance/block_mode/translate.feature
814
853
  - spec/acceptance/readme.md
@@ -826,6 +865,7 @@ test_files:
826
865
  - spec/fixtures/files/01_remix.rb
827
866
  - spec/fixtures/files/01_remix02.rb
828
867
  - spec/fixtures/files/01_remix10.rb.xml
868
+ - spec/fixtures/files/extra_car.png
829
869
  - spec/fixtures/files/favicon.ico
830
870
  - spec/fixtures/files/hardware_led.rb.xml
831
871
  - spec/helpers/editor_helper_spec.rb
@@ -836,9 +876,11 @@ test_files:
836
876
  - spec/javascripts/spec_helper.js
837
877
  - spec/lib/smalruby_editor_spec.rb
838
878
  - spec/models/concerns/ruby_to_block/block/character_method_call_spec.rb
879
+ - spec/models/concerns/ruby_to_block/block/character_spec.rb
839
880
  - spec/models/concerns/ruby_to_block/block/control_if_spec.rb
840
881
  - spec/models/concerns/ruby_to_block/block/control_loop_spec.rb
841
882
  - spec/models/concerns/ruby_to_block/block/events_on_start_spec.rb
883
+ - spec/models/concerns/ruby_to_block/block/hardware__neo_pixel_spec.rb
842
884
  - spec/models/concerns/ruby_to_block/block/hardware__smalrubot_spec.rb
843
885
  - spec/models/concerns/ruby_to_block/block/hardware_spec.rb
844
886
  - spec/models/concerns/ruby_to_block/block/looks_say_spec.rb
@@ -1,194 +0,0 @@
1
- # キャラクター設定ダイアログを表現するビュー
2
- Smalruby.CharacterModalView = Backbone.View.extend
3
- model: new Smalruby.Character()
4
-
5
- events:
6
- 'click #character-modal-costume-selector a': 'onSelectCostume'
7
- 'click #character_rotation_style_free': 'onRotationStyleFree'
8
- 'click #character_rotation_style_left_right': 'onRotationStyleLeftRight'
9
- 'click #character_rotation_style_none': 'onRotationStyleNone'
10
- 'click #character-modal-ok-button': 'onOk'
11
-
12
- previewZoomLevel: 0.5
13
-
14
- initialize: ->
15
- Smalruby.removeBackdropOnHidden(@$el)
16
-
17
- @target = null
18
-
19
- $('#character-modal-costume-selector img').on 'dragstart', (e) ->
20
- e.preventDefault()
21
-
22
- setPosition = (pos) =>
23
- @model.set
24
- x: parseInt(pos.left / @previewZoomLevel)
25
- y: parseInt(pos.top / @previewZoomLevel)
26
-
27
- $('#character-modal-character').draggable
28
- containment: '#character-modal-preview'
29
- cursor: 'move'
30
- drag: (event, ui) ->
31
- setPosition(ui.position)
32
-
33
- $('#character-modal-preview').droppable
34
- drop: (event, ui) ->
35
- setPosition(ui.draggable.position())
36
-
37
- @$el.find('input[name="character[name]"]').keypress (e) ->
38
- e = window.event if !e
39
- if e.keyCode == 13
40
- false
41
- else
42
- true
43
-
44
- self = @
45
- changeNameFunc = (e) ->
46
- self.model.set({ name: $(@).val() })
47
- self.nameChanged = true
48
- @$el.find('input[name="character[name]"]').change(changeNameFunc)
49
- @$el.find('input[name="character[name]"]').keyup(changeNameFunc)
50
-
51
- @$el.find('input[name="character[x]"]').change (e) ->
52
- self.model.set({ x: $(@).val() })
53
-
54
- @$el.find('input[name="character[y]"]').change (e) ->
55
- self.model.set({ y: $(@).val() })
56
-
57
- @$el.find('input[name="character[angle]"]').change (e) ->
58
- self.model.set({ angle: $(@).val() })
59
-
60
- @listenTo(@model, 'change:name', @onChangeName)
61
- @listenTo(@model, 'change:x', @onChangeX)
62
- @listenTo(@model, 'change:y', @onChangeY)
63
- @listenTo(@model, 'change:angle', @onChangeAngle)
64
- @listenTo(@model, 'change:costumes', @onChangeCostumes)
65
- @listenTo(@model, 'change:rotationStyle', @onChangeRotationStyle)
66
- @listenTo(@model, 'change', @onChange)
67
-
68
- @callAllOnChangeAttributes_()
69
-
70
- render: ->
71
- @onChange(@model)
72
- @$el.modal
73
- backdrop: 'static'
74
- @$el.modal('show')
75
-
76
- # HACK: ダイアログを表示して500ms程度待たないと画像のサイズが取得できなかった
77
- f = ->
78
- if @readImageSizeflag
79
- img = $('#character-modal-costume-selector .active img')
80
- if img.width() > 0
81
- $('#character-modal-character').css
82
- width: "#{img.width() / 2}px"
83
- height: "#{img.height() / 2}px"
84
- @readImageSizeflag = false
85
- else
86
- setTimeout(_.bind(f, @), 50)
87
- if @readImageSizeflag
88
- setTimeout(_.bind(f, @), 1)
89
-
90
- callAllOnChangeAttributes_: ->
91
- @onChangeName(@model, @model.get('name'))
92
- @onChangeX(@model, @model.get('x'))
93
- @onChangeY(@model, @model.get('y'))
94
- @onChangeAngle(@model, @model.get('angle'))
95
- @onChangeCostumes(@model, @model.get('costumes'))
96
- @onChangeRotationStyle(@model, @model.get('rotationStyle'))
97
-
98
- onChangeName: (model, value, options) ->
99
- @$el.find('input[name="character[name]"]').val(value)
100
-
101
- onChangeX: (model, value, options) ->
102
- @$el.find('input[name="character[x]"]').val(value)
103
- $('#character_x_value').text(value)
104
- $('#character-modal-character').css('left', parseInt(value * @previewZoomLevel))
105
-
106
- onChangeY: (model, value, options) ->
107
- @$el.find('input[name="character[y]"]').val(value)
108
- $('#character_y_value').text(value)
109
- $('#character-modal-character').css('top', parseInt(value * @previewZoomLevel))
110
-
111
- onChangeAngle: (model, value, options) ->
112
- @$el.find('input[name="character[angle]"]').val(value)
113
- $('#character_angle_value').text("#{value}°")
114
- rotate = "rotate(#{value}deg)"
115
- $('#character_angle_vector').css
116
- '-moz-transform': rotate
117
- '-webkit-transform': rotate
118
- transform: rotate
119
-
120
- @model.rotateImage('#character-modal-character')
121
-
122
- onChangeCostumes: (model, value, options) ->
123
- img = $('<img>').attr
124
- src: model.costumeUrl()
125
- alt: model.costume()
126
- $('#character-modal-character img').replaceWith(img)
127
- @$el.find('#character-modal-costume-selector a.thumbnail').removeClass('active')
128
- thumb = @$el.find("#character-modal-costume-selector img[alt=\"#{model.costume()}\"]")
129
- thumb.parent().addClass('active')
130
- if thumb.width() > 0
131
- $('#character-modal-character').css
132
- width: "#{thumb.width() / 2}px"
133
- height: "#{thumb.height() / 2}px"
134
- else
135
- @readImageSizeflag = true
136
-
137
- onChangeRotationStyle: (model, value, options) ->
138
- $('#character_rotation_style button.btn').removeClass('btn-primary')
139
- $("#character_rotation_style_#{value}").addClass('btn-primary')
140
- @onChangeAngle(@model, @model.get('angle'))
141
-
142
- onChange: (model, options) ->
143
- return unless @target
144
-
145
- @$el.find('.control-group[for="character[name]"]').removeClass('error')
146
- @$el.find('#character-modal-ok-button').removeClass('disabled').removeAttr('disabled')
147
-
148
- unless @model.isValid()
149
- @$el.find('.control-group[for="character[name]"]').addClass('error')
150
- @$el.find('#character-modal-ok-button').addClass('disabled').attr({ disabled: 'disabled' })
151
-
152
- name = @model.get('name')
153
- if @target.get('name') != name &&
154
- Smalruby.Collections.CharacterSet.findWhere({ name: name })
155
- @$el.find('.control-group[for="character[name]"]').addClass('error')
156
- @$el.find('#character-modal-ok-button').addClass('disabled').attr({ disabled: 'disabled' })
157
-
158
- onSelectCostume: (e) ->
159
- e.preventDefault()
160
-
161
- costume = $(e.target).attr('alt') || $(e.target).find('img').attr('alt')
162
-
163
- attrs =
164
- costumes: [costume]
165
-
166
- unless @nameChanged
167
- prefix = Smalruby.Character.costumeToNamePrefix(costume)
168
- if prefix != @model.namePrefix()
169
- if prefix == @target.namePrefix()
170
- attrs['name'] = @target.get('name')
171
- else
172
- attrs['name'] = Smalruby.Collections.CharacterSet.uniqueName(costume)
173
-
174
- @model.set(attrs)
175
-
176
- onRotationStyleFree: ->
177
- @model.set({ rotationStyle: 'free' })
178
-
179
- onRotationStyleLeftRight: ->
180
- @model.set({ rotationStyle: 'left_right' })
181
-
182
- onRotationStyleNone: ->
183
- @model.set({ rotationStyle: 'none' })
184
-
185
- onOk: ->
186
- @$el.modal('hide')
187
- if @target
188
- @target.set(_.clone(@model.attributes))
189
-
190
- setCharacter: (character)->
191
- @target = character
192
- @model.set(_.clone(@target.attributes))
193
- @nameChanged = false
194
- @