smalruby-editor 0.3.5-x86-mingw32 → 0.4.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

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
- @