smalruby-editor 0.3.5 → 0.4.0
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +1 -0
- data/.simplecov +7 -7
- data/.travis.yml +0 -0
- data/Guardfile +1 -1
- data/LICENSE +0 -0
- data/Procfile +1 -1
- data/Rakefile +0 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/javascripts/blocks/blockly.js.coffee.erb +0 -0
- data/app/assets/javascripts/blocks/character.js.coffee.erb +3 -0
- data/app/assets/javascripts/blocks/data.js.coffee.erb +0 -0
- data/app/assets/javascripts/blocks/etc.js.coffee.erb +0 -0
- data/app/assets/javascripts/blocks/field_character.js.coffee.erb +13 -1
- data/app/assets/javascripts/blocks/field_costume.js.coffee.erb +84 -0
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +26 -0
- data/app/assets/javascripts/blocks/looks.js.coffee.erb +32 -0
- data/app/assets/javascripts/collections/.keep +0 -0
- data/app/assets/javascripts/collections/character_set.js.coffee +0 -0
- data/app/assets/javascripts/generators/ruby.js.coffee.erb +10 -1
- data/app/assets/javascripts/models/.keep +0 -0
- data/app/assets/javascripts/models/character.js.coffee +45 -6
- data/app/assets/javascripts/models/scene.js.coffee +0 -0
- data/app/assets/javascripts/msg/en_us.js +4 -0
- data/app/assets/javascripts/msg/ja.js +4 -0
- data/app/assets/javascripts/routers/.keep +0 -0
- data/app/assets/javascripts/smalruby.js.coffee.erb +5 -1
- data/app/assets/javascripts/views/.keep +0 -0
- data/app/assets/javascripts/views/character_modal_view.js.coffee.erb +357 -0
- data/app/assets/javascripts/views/character_selector_view.js.coffee +2 -0
- data/app/assets/stylesheets/editor.css.scss +201 -16
- data/app/assets/stylesheets/flatstrap-custom.css.scss +0 -0
- data/app/assets/stylesheets/load-modal.css.scss +0 -0
- data/app/assets/templates/.keep +0 -0
- data/app/controllers/application_controller.rb +8 -2
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/costumes_controller.rb +58 -0
- data/app/controllers/editor_controller.rb +2 -0
- data/app/helpers/costumes_helper.rb +2 -0
- data/app/helpers/editor_helper.rb +0 -0
- data/app/helpers/sessions_helper.rb +0 -4
- data/app/mailers/.keep +0 -0
- data/app/models/.keep +0 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/concerns/ruby_to_block.rb +0 -0
- data/app/models/concerns/ruby_to_block/block.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/base.rb +2 -0
- data/app/models/concerns/ruby_to_block/block/character.rb +32 -11
- data/app/models/concerns/ruby_to_block/block/character_event.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/character_method_call.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/character_new.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/character_operation.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/control_beark.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/control_if.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/control_loop.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/control_sleep.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/do.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/else.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/end.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/events_on_click.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/events_on_key_push_or_down.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/events_on_start.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_button_pressed_or_released.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_init_hardware.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_led_turn_off.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_led_turn_on.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_motor_driver.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_set_speed.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_speed.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_neo_pixel_set_rgb.rb +31 -0
- data/app/models/concerns/ruby_to_block/block/hardware_rgb_led_set_color.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_rgb_led_turn_off.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_sensor_value.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_run.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_set_speed.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_speed.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/looks_hide.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/looks_next_costume.rb +12 -0
- data/app/models/concerns/ruby_to_block/block/looks_say.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/looks_show.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/looks_switch_costume.rb +22 -0
- data/app/models/concerns/ruby_to_block/block/looks_vanish.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/math_number.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_change_x_by.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_change_y_by.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_go_to_character.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_go_to_mouse.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_move.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_point_towards_character.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_point_towards_mouse.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_rotate_left.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_rotate_right.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_self_angle.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_self_x.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_self_y.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_set_angle.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_set_x.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_set_x_y.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_set_y.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_turn.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_turn_if_reach_wall.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/motion_turn_xy.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/null.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/operators_compare.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/operators_false.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/operators_true.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/require_smalruby.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/ruby_comment.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/ruby_expression.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/ruby_p.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/ruby_statement.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/sensing_hit.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/sensing_reach_wall.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/sound_play.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/sound_preset_sounds.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/text.rb +0 -0
- data/app/models/concerns/ruby_to_block/block/value.rb +0 -0
- data/app/models/concerns/ruby_to_block/context.rb +0 -0
- data/app/models/concerns/ruby_to_block/formatter.rb +0 -0
- data/app/models/costume.rb +67 -0
- data/app/models/source_code.rb +9 -1
- data/app/models/user.rb +7 -0
- data/app/views/costumes/index.html.haml +19 -0
- data/app/views/editor/_character_modal.html.haml +35 -7
- data/app/views/editor/_toolbox_default.html.haml +9 -0
- data/app/views/editor/demo.html.erb +0 -0
- data/app/views/editor/index.html.haml +1 -0
- data/bin/smalruby-editor +1 -0
- data/bin/spring +7 -9
- data/config.ru +0 -0
- data/config/boot.rb +0 -0
- data/config/database.yml.mysql2 +0 -0
- data/config/database.yml.sqlite3 +0 -0
- data/config/database.yml.travis +0 -0
- data/config/environment.rb +0 -0
- data/config/environments/development.rb +0 -0
- data/config/environments/production.rb +0 -0
- data/config/environments/standalone.rb +0 -0
- data/config/environments/test.rb +0 -0
- data/config/initializers/backtrace_silencers.rb +0 -0
- data/config/initializers/filter_parameter_logging.rb +0 -0
- data/config/initializers/inflections.rb +0 -0
- data/config/initializers/mime_types.rb +0 -0
- data/config/initializers/secret_token.rb +0 -0
- data/config/initializers/session_store.rb +0 -0
- data/config/initializers/teaspoon.rb +0 -0
- data/config/initializers/wrap_parameters.rb +0 -0
- data/config/locales/en.yml +10 -1
- data/config/locales/ja.yml +10 -0
- data/config/routes.rb +2 -0
- data/config/unicorn.rb +23 -23
- data/db/migrate/20131216121603_create_source_codes.rb +0 -0
- data/db/migrate/20131219045113_add_filename_to_source_code.rb +0 -0
- data/db/migrate/20150513061250_add_index_name_on_users.rb +1 -1
- data/db/migrate/20150607012053_create_costumes.rb +12 -0
- data/db/migrate/20150607012707_add_indexes_on_costumes.rb +13 -0
- data/db/migrate/20150607034013_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
- data/db/migrate/20150607034014_add_missing_unique_indices.acts_as_taggable_on_engine.rb +21 -0
- data/db/migrate/20150607034015_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +15 -0
- data/db/migrate/20150607034016_add_missing_taggable_index.acts_as_taggable_on_engine.rb +10 -0
- data/db/migrate/20150607034017_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +12 -0
- data/db/migrate/20150607034018_insert_preset_costumes.rb +9 -0
- data/db/schema.rb +35 -2
- data/db/seeds.rb +2 -0
- data/demos/car_chase.rb.xml +128 -128
- data/demos/pong.rb.xml +379 -379
- data/demos/star.rb.xml +115 -115
- data/lib/assets/.keep +0 -0
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/tasks/.keep +0 -0
- data/lib/tasks/gem.rake +0 -0
- data/lib/tasks/rspec.rake +0 -0
- data/lib/tasks/rubocop.rake +0 -0
- data/log/.keep +0 -0
- data/public/404.html +0 -0
- data/public/422.html +0 -0
- data/public/500.html +0 -0
- data/public/apple-touch-icon.png +0 -0
- data/public/blockly/media/1x1.gif +0 -0
- data/public/blockly/media/click.mp3 +0 -0
- data/public/blockly/media/click.ogg +0 -0
- data/public/blockly/media/click.wav +0 -0
- data/public/blockly/media/delete.mp3 +0 -0
- data/public/blockly/media/delete.ogg +0 -0
- data/public/blockly/media/delete.wav +0 -0
- data/public/blockly/media/handopen.cur +0 -0
- data/public/blockly/media/quote0.png +0 -0
- data/public/blockly/media/quote1.png +0 -0
- data/public/browserconfig.xml +0 -0
- data/public/fonts/FontAwesome.otf +0 -0
- data/public/fonts/fontawesome-webfont.eot +0 -0
- data/public/fonts/fontawesome-webfont.ttf +0 -0
- data/public/fonts/fontawesome-webfont.woff +0 -0
- data/public/large.png +0 -0
- data/public/robots.txt +0 -0
- data/public/smalruby/assets/ball1.png +0 -0
- data/public/smalruby/assets/ball2.png +0 -0
- data/public/smalruby/assets/ball3.png +0 -0
- data/public/smalruby/assets/ball4.png +0 -0
- data/public/smalruby/assets/ball5.png +0 -0
- data/public/smalruby/assets/ball6.png +0 -0
- data/public/smalruby/assets/car1.png +0 -0
- data/public/smalruby/assets/car2.png +0 -0
- data/public/smalruby/assets/car3.png +0 -0
- data/public/smalruby/assets/car4.png +0 -0
- data/public/smalruby/assets/cat1.png +0 -0
- data/public/smalruby/assets/cat2.png +0 -0
- data/public/smalruby/assets/cat3.png +0 -0
- data/public/smalruby/assets/frog1.png +0 -0
- data/public/smalruby/assets/piano_do.wav +0 -0
- data/public/smalruby/assets/piano_do_2.wav +0 -0
- data/public/smalruby/assets/piano_fa.wav +0 -0
- data/public/smalruby/assets/piano_mi.wav +0 -0
- data/public/smalruby/assets/piano_ra.wav +0 -0
- data/public/smalruby/assets/piano_re.wav +0 -0
- data/public/smalruby/assets/piano_si.wav +0 -0
- data/public/smalruby/assets/piano_so.wav +0 -0
- data/public/smalruby/assets/ryu1.png +0 -0
- data/public/smalruby/assets/ryu2.png +0 -0
- data/public/smalruby/assets/taichi1.png +0 -0
- data/public/smalruby/assets/taichi2.png +0 -0
- data/public/square.png +0 -0
- data/public/tiny.png +0 -0
- data/public/wide.png +0 -0
- data/smalruby-editor.gemspec +2 -1
- data/spec/acceptance/block_mode/blocks/character/new.feature +5 -5
- data/spec/acceptance/block_mode/blocks/control/await.feature +2 -2
- data/spec/acceptance/block_mode/blocks/control/await_until.feature +3 -3
- data/spec/acceptance/block_mode/blocks/control/break.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/if.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/if_else.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/loop.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/next.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/redo.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/sleep.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/times.feature +0 -0
- data/spec/acceptance/block_mode/blocks/control/until.feature +0 -0
- data/spec/acceptance/block_mode/blocks/events/on_click.feature +2 -2
- data/spec/acceptance/block_mode/blocks/events/on_hit.feature +4 -4
- data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +4 -4
- data/spec/acceptance/block_mode/blocks/events/on_start.feature +2 -2
- data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +1 -1
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +2 -2
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +2 -2
- data/spec/acceptance/block_mode/blocks/hardware/motor_driver.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/neo_pixel_set_rgb.feature +100 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action_with_sec.feature +1 -1
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_led_turn_on_or_off.feature +1 -1
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +1 -1
- data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature +0 -0
- data/spec/acceptance/block_mode/blocks/looks/hide.feature +2 -2
- data/spec/acceptance/block_mode/blocks/looks/next_costume.feature +56 -0
- data/spec/acceptance/block_mode/blocks/looks/say.feature +3 -3
- data/spec/acceptance/block_mode/blocks/looks/show.feature +2 -2
- data/spec/acceptance/block_mode/blocks/looks/vanish.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/move.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/self_x.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/self_y.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/set_x.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/set_y.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/turn.feature +2 -2
- data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +2 -2
- data/spec/acceptance/block_mode/blocks/operators/and_or.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/four_arithmetic_and_compares.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/index_of.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/length.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/math_method.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/negate.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/rand.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/round.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/text.feature +0 -0
- data/spec/acceptance/block_mode/blocks/operators/true_false.feature +0 -0
- data/spec/acceptance/block_mode/blocks/ruby/expression.feature +0 -0
- data/spec/acceptance/block_mode/blocks/ruby/p.feature +0 -0
- data/spec/acceptance/block_mode/blocks/ruby/statement_comment.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +2 -2
- data/spec/acceptance/block_mode/blocks/sensing/hit.feature +6 -6
- data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sensing/reach_wall.feature +2 -2
- data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +0 -0
- data/spec/acceptance/block_mode/blocks/sound/play.feature +2 -2
- data/spec/acceptance/block_mode/character_modal_view.feature +164 -0
- data/spec/acceptance/block_mode/demo.feature +2 -2
- data/spec/acceptance/block_mode/translate.feature +0 -0
- data/spec/acceptance/readme.md +0 -0
- data/spec/acceptance/ruby_mode/check.feature +0 -0
- data/spec/acceptance/ruby_mode/load.feature +0 -0
- data/spec/acceptance/ruby_mode/translate.feature +2 -2
- data/spec/acceptance/standalone/preference.feature +8 -8
- data/spec/acceptance/standalone/run.feature +0 -0
- data/spec/acceptance/standalone/save.feature +1 -1
- data/spec/acceptance/standalone/signin.feature +1 -1
- data/spec/controllers/source_codes_controller_spec.rb +0 -0
- data/spec/fixtures/files/01.rb +0 -0
- data/spec/fixtures/files/01.rb.xml +0 -0
- data/spec/fixtures/files/01_remix.rb +0 -0
- data/spec/fixtures/files/01_remix02.rb +0 -0
- data/spec/fixtures/files/01_remix10.rb.xml +0 -0
- data/spec/fixtures/files/extra_car.png +0 -0
- data/spec/fixtures/files/favicon.ico +0 -0
- data/spec/helpers/editor_helper_spec.rb +0 -0
- data/spec/javascripts/collections/character_set_spec.coffee +0 -0
- data/spec/javascripts/models/character_spec.coffee +2 -14
- data/spec/javascripts/models/scene_spec.coffee +0 -0
- data/spec/javascripts/spec_helper.js +0 -0
- data/spec/lib/smalruby_editor_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/character_method_call_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/character_spec.rb +71 -0
- data/spec/models/concerns/ruby_to_block/block/control_if_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/control_loop_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/events_on_start_spec.rb +6 -6
- data/spec/models/concerns/ruby_to_block/block/hardware__neo_pixel_spec.rb +77 -0
- data/spec/models/concerns/ruby_to_block/block/looks_say_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/looks_spec.rb +26 -2
- data/spec/models/concerns/ruby_to_block/block/motion_move_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/motion_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/motion_turn_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/motion_turn_xy_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/require_smalruby_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/ruby_comment_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/ruby_statement_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/sensing_reach_wall_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/shared/block_examples.rb +2 -2
- data/spec/models/concerns/ruby_to_block/block/sound_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block/text_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block/block_spec.rb +0 -0
- data/spec/models/concerns/ruby_to_block_spec.rb +0 -0
- data/spec/spec_helper.rb +21 -10
- data/spec/steps/block_mode_steps.rb +0 -0
- data/spec/steps/fix_turnip.rb +0 -0
- data/spec/steps/global_variable.rb +0 -0
- data/spec/steps/standalone_steps.rb +3 -3
- data/spec/steps/then_steps.rb +28 -0
- data/spec/steps/when_steps.rb +15 -18
- data/spec/support/capybara.rb +0 -0
- data/spec/support/env.rb +0 -0
- data/spec/support/ruby_to_block.rb +0 -0
- data/spec/teaspoon_env.rb +0 -0
- data/spec/turnip_helper.rb +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/jquery.blockUI.js +0 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- metadata +56 -14
- data/app/assets/javascripts/views/character_modal_view.js.coffee +0 -194
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class Costume < ActiveRecord::Base
|
2
|
+
acts_as_taggable
|
3
|
+
|
4
|
+
PRESET_COSTUME_SETTINGS = [
|
5
|
+
{ name: "car1", tag_list: %w(Preset Car) },
|
6
|
+
{ name: "car2", tag_list: %w(Preset Car) },
|
7
|
+
{ name: "car3", tag_list: %w(Preset Car) },
|
8
|
+
{ name: "car4", tag_list: %w(Preset Car) },
|
9
|
+
{ name: "cat1", tag_list: %w(Preset Animal Cat) },
|
10
|
+
{ name: "cat2", tag_list: %w(Preset Animal Cat) },
|
11
|
+
{ name: "cat3", tag_list: %w(Preset Animal Cat) },
|
12
|
+
{ name: "frog1", tag_list: %w(Preset Aminal Frog) },
|
13
|
+
{ name: "ball1", tag_list: %w(Preset Ball) },
|
14
|
+
{ name: "ball2", tag_list: %w(Preset Ball) },
|
15
|
+
{ name: "ball3", tag_list: %w(Preset Ball) },
|
16
|
+
{ name: "ball4", tag_list: %w(Preset Ball) },
|
17
|
+
{ name: "ball5", tag_list: %w(Preset Ball) },
|
18
|
+
{ name: "ball6", tag_list: %w(Preset Ball) },
|
19
|
+
{ name: "ryu1", tag_list: %w(Preset Human Ninja) },
|
20
|
+
{ name: "ryu2", tag_list: %w(Preset Human Ninja) },
|
21
|
+
{ name: "taichi1", tag_list: %w(Preset Animal Ninja) },
|
22
|
+
{ name: "taichi2", tag_list: %w(Preset Animal Ninja) },
|
23
|
+
]
|
24
|
+
|
25
|
+
belongs_to :user
|
26
|
+
|
27
|
+
scope :presets, -> { where(preset: true) }
|
28
|
+
scope :default_order, -> { order(preset: :asc, position: :asc) }
|
29
|
+
|
30
|
+
class << self
|
31
|
+
def create_presets
|
32
|
+
PRESET_COSTUME_SETTINGS.each.with_index do |setting, index|
|
33
|
+
costume = Costume.find_or_create_by(name: setting[:name],
|
34
|
+
position: index,
|
35
|
+
preset: true)
|
36
|
+
costume.tag_list = setting[:tag_list]
|
37
|
+
costume.save!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy_presets
|
42
|
+
names = PRESET_COSTUME_SETTINGS.map { |s| s[:name] }
|
43
|
+
where(name: names, preset: true).destroy_all
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def url
|
48
|
+
"/smalruby/assets/#{basename}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def path
|
52
|
+
if preset?
|
53
|
+
Rails.root.join("public/smalruby/assets/#{basename}")
|
54
|
+
else
|
55
|
+
s = "~/#{user.name}/__assets__/#{basename}"
|
56
|
+
Pathname(s).expand_path
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def basename=(val)
|
61
|
+
self.name = val.sub(/\.png$/, "")
|
62
|
+
end
|
63
|
+
|
64
|
+
def basename
|
65
|
+
"#{name}.png"
|
66
|
+
end
|
67
|
+
end
|
data/app/models/source_code.rb
CHANGED
@@ -73,7 +73,15 @@ class SourceCode < ActiveRecord::Base
|
|
73
73
|
|
74
74
|
doc = Nokogiri::HTML.parse(data)
|
75
75
|
if (attr = doc.xpath('//character[1]/@costumes').first)
|
76
|
-
|
76
|
+
costumes = attr.value.split(",").map { |s|
|
77
|
+
s.sub(/^[^:]*:/, "")
|
78
|
+
}
|
79
|
+
if (attr = doc.xpath('//character[1]/@costume_index').first)
|
80
|
+
costume_index = attr.value.to_i
|
81
|
+
else
|
82
|
+
costume_index = 0
|
83
|
+
end
|
84
|
+
res[:imageUrl] = "/smalruby/assets/#{costumes[costume_index]}"
|
77
85
|
end
|
78
86
|
text = doc.xpath('//block[@type="ruby_comment"][1]' +
|
79
87
|
'/field[@name="COMMENT"]/text()').first
|
data/app/models/user.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
class User < ActiveRecord::Base
|
2
2
|
serialize :preferences
|
3
3
|
|
4
|
+
has_many :costumes do
|
5
|
+
def with_preset
|
6
|
+
condition = where(costumes: { preset: true }).where_values.reduce(:or)
|
7
|
+
except(:where).where(condition)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
4
11
|
before_save do
|
5
12
|
preferences.each do |key, value|
|
6
13
|
case key
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#character-modal-costume-selector
|
2
|
+
.row-fluid
|
3
|
+
%ul.thumbnails
|
4
|
+
- @costumes.each do |costume|
|
5
|
+
%li
|
6
|
+
%a.thumbnail
|
7
|
+
%img{src: "#{costume.url}", alt: "#{costume.basename}"}
|
8
|
+
- if !costume.preset?
|
9
|
+
%a.remove-button{"data-url" => "#{costume_path(costume)}", "data-message" => "#{t(".confirm_to_delete_costume")}"}
|
10
|
+
%i.icon-remove
|
11
|
+
|
12
|
+
- if signed_in?
|
13
|
+
%li
|
14
|
+
%a#character-modal-upload-costume
|
15
|
+
%i.icon-plus-sign-alt
|
16
|
+
%br
|
17
|
+
= t('.upload_costume')
|
18
|
+
= form_tag(costumes_path, id: "character-modal-upload-costume-form", method: "post", multipart: true) do
|
19
|
+
%input#character-modal-upload-costume-file{type: "file", name: "costume[file]", style: "display: none"}
|
@@ -2,13 +2,27 @@
|
|
2
2
|
:role => 'dialog', :'aria-hidden' => 'true'}
|
3
3
|
.modal-body
|
4
4
|
#character-modal-right-pane{:class => 'right-pane'}
|
5
|
-
#character-modal-
|
6
|
-
|
7
|
-
%
|
8
|
-
-
|
9
|
-
%
|
10
|
-
|
11
|
-
|
5
|
+
#character-modal-right-pane-inner
|
6
|
+
#character-modal-right-pane-inner-right-pane{:class => 'right-pane'}
|
7
|
+
%form#character-modal-costume-form{:class => 'form-horizontal'}
|
8
|
+
.control-group{for: "costume[name]"}
|
9
|
+
%label.control-label{for: "costume_name"}<
|
10
|
+
= t('.costume_name')
|
11
|
+
.controls
|
12
|
+
%input#costume_name.input-large{name: "costume[name]", type: "text", placeholder: t('.msg_input_costume_name')}
|
13
|
+
|
14
|
+
#character-modal-costume-selector
|
15
|
+
|
16
|
+
#character-modal-right-pane-inner-left-pane{:class => 'left-pane'}
|
17
|
+
#character-modal-costume-set-header
|
18
|
+
= t('.costumes')
|
19
|
+
#character-modal-costume-set-container
|
20
|
+
#character-modal-costume-set
|
21
|
+
#character-modal-add-costume.item
|
22
|
+
%a#character-modal-add-costume-button.costume
|
23
|
+
%i.icon-plus-sign-alt
|
24
|
+
%br
|
25
|
+
= t('.new_costume')
|
12
26
|
|
13
27
|
#character-modal-left-pane{:class => 'left-pane'}
|
14
28
|
#character-modal-preview
|
@@ -60,3 +74,17 @@
|
|
60
74
|
%button#character-modal-ok-button{:class => 'btn btn-primary'}<
|
61
75
|
%i.icon-circle-blank
|
62
76
|
= t('common.ok')
|
77
|
+
|
78
|
+
%script#character-modal-costume-template{:type => 'text/template'}
|
79
|
+
.item
|
80
|
+
.item-info
|
81
|
+
.name
|
82
|
+
{{- name }}
|
83
|
+
.attributes
|
84
|
+
{{- index }}
|
85
|
+
|
86
|
+
%a.remove-button
|
87
|
+
%i.icon-remove
|
88
|
+
|
89
|
+
%a.costume
|
90
|
+
%img{src: '{{- path }}', alt: '{{- basename }}'}
|
@@ -194,6 +194,9 @@
|
|
194
194
|
-# 消滅する
|
195
195
|
%block{:type => "#{category}_vanish"}
|
196
196
|
|
197
|
+
%block{:type => "#{category}_next_costume"}
|
198
|
+
%block{:type => "#{category}_switch_costume"}
|
199
|
+
|
197
200
|
-# 大きさを( )%ずつ変える
|
198
201
|
-#%block{:type => "#{category}_change_scale_by"}
|
199
202
|
-# = toolbox_number_value('SCALE', 10)
|
@@ -217,6 +220,12 @@
|
|
217
220
|
-# LED[▼PIN]をオフにする
|
218
221
|
%block{:type => "#{category}_#{subcategory}_turn_off"}
|
219
222
|
|
223
|
+
- subcategory = 'neo_pixel'
|
224
|
+
%block{:type => "#{category}_#{subcategory}_set_rgb"}
|
225
|
+
= toolbox_number_value('RED', 0)
|
226
|
+
= toolbox_number_value('GREEN', 0)
|
227
|
+
= toolbox_number_value('BLUE', 0)
|
228
|
+
|
220
229
|
- subcategory = 'rgb_led'
|
221
230
|
-# RGB LED[▼アノード]コモン[▼PIN]を[カラー]にする
|
222
231
|
%block{:type => "#{category}_#{subcategory}_set_color"}
|
File without changes
|
data/bin/smalruby-editor
CHANGED
data/bin/spring
CHANGED
@@ -4,17 +4,15 @@
|
|
4
4
|
# It gets overwritten when you run the `spring binstub` command
|
5
5
|
|
6
6
|
unless defined?(Spring)
|
7
|
-
require
|
8
|
-
require
|
7
|
+
require "rubygems"
|
8
|
+
require "bundler"
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
ENV[
|
13
|
-
([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
|
14
|
-
ENV['GEM_HOME'] = ''
|
10
|
+
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)
|
11
|
+
ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
|
12
|
+
ENV["GEM_HOME"] = ""
|
15
13
|
Gem.paths = ENV
|
16
14
|
|
17
|
-
gem
|
18
|
-
require
|
15
|
+
gem "spring", match[1]
|
16
|
+
require "spring/binstub"
|
19
17
|
end
|
20
18
|
end
|
data/config.ru
CHANGED
File without changes
|
data/config/boot.rb
CHANGED
File without changes
|
data/config/database.yml.mysql2
CHANGED
File without changes
|
data/config/database.yml.sqlite3
CHANGED
File without changes
|
data/config/database.yml.travis
CHANGED
File without changes
|
data/config/environment.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/config/environments/test.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/config/locales/en.yml
CHANGED
@@ -37,6 +37,7 @@ en:
|
|
37
37
|
index:
|
38
38
|
block: "Block"
|
39
39
|
msg_input_program_name: "Input your program name(ex:01.rb)"
|
40
|
+
menu: "Menu"
|
40
41
|
run: "Run"
|
41
42
|
download: "Download"
|
42
43
|
load: "Load"
|
@@ -49,7 +50,7 @@ en:
|
|
49
50
|
|
50
51
|
block_tab:
|
51
52
|
character: "Character"
|
52
|
-
new_character: "New
|
53
|
+
new_character: "New character"
|
53
54
|
direction_parameter: "Dir:"
|
54
55
|
stage: "Stage"
|
55
56
|
|
@@ -74,6 +75,10 @@ en:
|
|
74
75
|
y_position: "Y"
|
75
76
|
msg_input_name: "car1 and ball1 etc..."
|
76
77
|
direction: "Dir"
|
78
|
+
costumes: "Costumes:"
|
79
|
+
new_costume: "New costume"
|
80
|
+
costume_name: "Costume name"
|
81
|
+
msg_input_costume_name: "costume1 etc..."
|
77
82
|
|
78
83
|
load_modal:
|
79
84
|
preset_programs: "Preset programs"
|
@@ -92,6 +97,10 @@ en:
|
|
92
97
|
message: "Input your name<br>not to mix with other people's program."
|
93
98
|
username_placeholder: "username, ID, nickname, etc..."
|
94
99
|
|
100
|
+
costumes:
|
101
|
+
index:
|
102
|
+
upload_costume: "Upload costume..."
|
103
|
+
|
95
104
|
users:
|
96
105
|
preferences:
|
97
106
|
toolbox: "Toolbox"
|
data/config/locales/ja.yml
CHANGED
@@ -38,6 +38,7 @@ ja:
|
|
38
38
|
index:
|
39
39
|
block: "ブロック"
|
40
40
|
msg_input_program_name: "プログラムの名前を入れてね(例:01.rb)"
|
41
|
+
menu: "メニュー"
|
41
42
|
run: "実行"
|
42
43
|
download: "ダウンロード"
|
43
44
|
load: "ロード"
|
@@ -75,6 +76,10 @@ ja:
|
|
75
76
|
y_position: "Y座標"
|
76
77
|
msg_input_name: "car1やball1など"
|
77
78
|
direction: "向き"
|
79
|
+
costumes: "コスチューム:"
|
80
|
+
new_costume: "新しいコスチューム"
|
81
|
+
costume_name: "コスチュームの名前"
|
82
|
+
msg_input_costume_name: "costume1など"
|
78
83
|
|
79
84
|
load_modal:
|
80
85
|
preset_programs: "いろいろなプログラム"
|
@@ -93,6 +98,11 @@ ja:
|
|
93
98
|
message: "あなたの名前をいれて、<br />ほかの人のプログラムとまざらないようにしよう♪"
|
94
99
|
username_placeholder: "名前、生徒番号、ニックネームなど"
|
95
100
|
|
101
|
+
costumes:
|
102
|
+
index:
|
103
|
+
upload_costume: "新しい画像"
|
104
|
+
confirm_to_delete_costume: "登録した画像を削除します。本当にいいですか?"
|
105
|
+
|
96
106
|
users:
|
97
107
|
preferences:
|
98
108
|
toolbox: "ツールボックス"
|
data/config/routes.rb
CHANGED
@@ -11,6 +11,8 @@ SmalrubyEditor::Application.routes.draw do
|
|
11
11
|
match '/signout', to: 'sessions#destroy', via: 'delete'
|
12
12
|
|
13
13
|
resources :users, only: [:update]
|
14
|
+
resources :costumes, only: [:index, :create, :destroy]
|
15
|
+
get "/smalruby/assets/:basename", to: "costumes#show"
|
14
16
|
|
15
17
|
resources :source_codes, only: [:create, :index]
|
16
18
|
post 'source_codes/check'
|
data/config/unicorn.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
|
2
|
-
timeout 15
|
3
|
-
preload_app true
|
4
|
-
|
5
|
-
# rubocop:disable Output
|
6
|
-
before_fork do |server, worker|
|
7
|
-
Signal.trap 'TERM' do
|
8
|
-
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
|
9
|
-
Process.kill 'QUIT', Process.pid
|
10
|
-
end
|
11
|
-
|
12
|
-
defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect!
|
13
|
-
end
|
14
|
-
|
15
|
-
after_fork do |server, worker|
|
16
|
-
Signal.trap 'TERM' do
|
17
|
-
puts 'Unicorn worker intercepting TERM and doing nothing.' \
|
18
|
-
' Wait for master to send QUIT'
|
19
|
-
end
|
20
|
-
|
21
|
-
defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
|
22
|
-
end
|
23
|
-
# rubocop:enable Output
|
1
|
+
worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
|
2
|
+
timeout 15
|
3
|
+
preload_app true
|
4
|
+
|
5
|
+
# rubocop:disable Output
|
6
|
+
before_fork do |server, worker|
|
7
|
+
Signal.trap 'TERM' do
|
8
|
+
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
|
9
|
+
Process.kill 'QUIT', Process.pid
|
10
|
+
end
|
11
|
+
|
12
|
+
defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect!
|
13
|
+
end
|
14
|
+
|
15
|
+
after_fork do |server, worker|
|
16
|
+
Signal.trap 'TERM' do
|
17
|
+
puts 'Unicorn worker intercepting TERM and doing nothing.' \
|
18
|
+
' Wait for master to send QUIT'
|
19
|
+
end
|
20
|
+
|
21
|
+
defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
|
22
|
+
end
|
23
|
+
# rubocop:enable Output
|
File without changes
|
File without changes
|