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.
- 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
 
| 
         @@ -17,6 +17,8 @@ Smalruby.CharacterSelectorView = Backbone.View.extend({ 
     | 
|
| 
       17 
17 
     | 
    
         
             
                    if (last = _.last(charSet.models))
         
     | 
| 
       18 
18 
     | 
    
         
             
                      name: charSet.uniqueName(last.costume())
         
     | 
| 
       19 
19 
     | 
    
         
             
                      costumes: _.clone(last.get('costumes'))
         
     | 
| 
      
 20 
     | 
    
         
            +
                      costumeNames: _.clone(last.get('costumeNames'))
         
     | 
| 
      
 21 
     | 
    
         
            +
                      costumeIndex: _.clone(last.get('costumeIndex'))
         
     | 
| 
       20 
22 
     | 
    
         
             
                    else
         
     | 
| 
       21 
23 
     | 
    
         
             
                      name: charSet.uniqueName()
         
     | 
| 
       22 
24 
     | 
    
         
             
                  c = new Smalruby.Character(attrs)
         
     | 
| 
         @@ -5,6 +5,9 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            $margin: 20px;
         
     | 
| 
       6 
6 
     | 
    
         
             
            $character-size: 32px * 5;
         
     | 
| 
       7 
7 
     | 
    
         
             
            $left-pane-width: $character-size + $margin * 2;
         
     | 
| 
      
 8 
     | 
    
         
            +
            $border-size: 5px;
         
     | 
| 
      
 9 
     | 
    
         
            +
            $border-color: #0088cc;
         
     | 
| 
      
 10 
     | 
    
         
            +
            $scrollbar-width: 20px;
         
     | 
| 
       8 
11 
     | 
    
         | 
| 
       9 
12 
     | 
    
         
             
            html {
         
     | 
| 
       10 
13 
     | 
    
         
             
                -ms-touch-action: manipulation;
         
     | 
| 
         @@ -84,9 +87,6 @@ html { 
     | 
|
| 
       84 
87 
     | 
    
         
             
                            }
         
     | 
| 
       85 
88 
     | 
    
         | 
| 
       86 
89 
     | 
    
         
             
                            #selectors-tab-content {
         
     | 
| 
       87 
     | 
    
         
            -
                                $border-size: 5px;
         
     | 
| 
       88 
     | 
    
         
            -
                                $border-color: #0088cc;
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
90 
     | 
    
         
             
                                position: absolute;
         
     | 
| 
       91 
91 
     | 
    
         
             
                                width: $character-size + $margin * 3;
         
     | 
| 
       92 
92 
     | 
    
         
             
                                top: 32px;
         
     | 
| 
         @@ -246,10 +246,10 @@ html { 
     | 
|
| 
       246 
246 
     | 
    
         
             
                $preview-width: 320px;
         
     | 
| 
       247 
247 
     | 
    
         
             
                $preview-height: 240px;
         
     | 
| 
       248 
248 
     | 
    
         | 
| 
       249 
     | 
    
         
            -
                $attributes-height:  
     | 
| 
      
 249 
     | 
    
         
            +
                $attributes-height: 260px;
         
     | 
| 
       250 
250 
     | 
    
         | 
| 
       251 
251 
     | 
    
         
             
                $left-pane-width: $preview-width + 2px;
         
     | 
| 
       252 
     | 
    
         
            -
                $right-pane-width: $character-size *  
     | 
| 
      
 252 
     | 
    
         
            +
                $right-pane-width: $character-size * 4 + $scrollbar-width * 2 + $modal-body-margin;
         
     | 
| 
       253 
253 
     | 
    
         | 
| 
       254 
254 
     | 
    
         
             
                $modal-width: $left-pane-width + $right-pane-width + $modal-margin * 2;
         
     | 
| 
       255 
255 
     | 
    
         
             
                $modal-height: $preview-height + 2px + $attributes-height + $modal-margin * 2;
         
     | 
| 
         @@ -328,25 +328,210 @@ html { 
     | 
|
| 
       328 
328 
     | 
    
         | 
| 
       329 
329 
     | 
    
         
             
                        overflow: hidden;
         
     | 
| 
       330 
330 
     | 
    
         | 
| 
       331 
     | 
    
         
            -
                        #character-modal- 
     | 
| 
       332 
     | 
    
         
            -
                             
     | 
| 
      
 331 
     | 
    
         
            +
                        #character-modal-right-pane-inner {
         
     | 
| 
      
 332 
     | 
    
         
            +
                            $inner-left-pane-width: $character-size + $scrollbar-width;
         
     | 
| 
      
 333 
     | 
    
         
            +
             
     | 
| 
      
 334 
     | 
    
         
            +
                            margin-left: $left-pane-width + $modal-body-margin;
         
     | 
| 
       333 
335 
     | 
    
         
             
                            position: absolute;
         
     | 
| 
       334 
336 
     | 
    
         
             
                            left: 0;
         
     | 
| 
       335 
337 
     | 
    
         
             
                            top: 0;
         
     | 
| 
       336 
338 
     | 
    
         
             
                            right: 0;
         
     | 
| 
       337 
339 
     | 
    
         
             
                            bottom: 0;
         
     | 
| 
       338 
     | 
    
         
            -
                            width: $right-pane-width 
     | 
| 
       339 
     | 
    
         
            -
                             
     | 
| 
      
 340 
     | 
    
         
            +
                            width: $right-pane-width;
         
     | 
| 
      
 341 
     | 
    
         
            +
                            height: $modal-height - $modal-body-margin * 2;
         
     | 
| 
       340 
342 
     | 
    
         | 
| 
       341 
     | 
    
         
            -
                             
     | 
| 
       342 
     | 
    
         
            -
                                 
     | 
| 
      
 343 
     | 
    
         
            +
                            #character-modal-right-pane-inner-left-pane {
         
     | 
| 
      
 344 
     | 
    
         
            +
                                width: $inner-left-pane-width;
         
     | 
| 
      
 345 
     | 
    
         
            +
                                height: $modal-height - $modal-body-margin * 2;
         
     | 
| 
       343 
346 
     | 
    
         | 
| 
       344 
     | 
    
         
            -
                                 
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
      
 347 
     | 
    
         
            +
                                margin-left: 0;
         
     | 
| 
      
 348 
     | 
    
         
            +
             
     | 
| 
      
 349 
     | 
    
         
            +
                                overflow: hidden;
         
     | 
| 
      
 350 
     | 
    
         
            +
             
     | 
| 
      
 351 
     | 
    
         
            +
                                #character-modal-costume-set-header {
         
     | 
| 
      
 352 
     | 
    
         
            +
                                    width: $inner-left-pane-width;
         
     | 
| 
      
 353 
     | 
    
         
            +
                                }
         
     | 
| 
      
 354 
     | 
    
         
            +
             
     | 
| 
      
 355 
     | 
    
         
            +
                                #character-modal-costume-set-container {
         
     | 
| 
      
 356 
     | 
    
         
            +
                                    overflow-y: scroll;
         
     | 
| 
      
 357 
     | 
    
         
            +
                                    width: $inner-left-pane-width;
         
     | 
| 
      
 358 
     | 
    
         
            +
                                    height: 504px - 20px;
         
     | 
| 
      
 359 
     | 
    
         
            +
             
     | 
| 
      
 360 
     | 
    
         
            +
                                    .item {
         
     | 
| 
      
 361 
     | 
    
         
            +
                                        position: relative;
         
     | 
| 
      
 362 
     | 
    
         
            +
                                        width: $character-size;
         
     | 
| 
      
 363 
     | 
    
         
            +
                                        height: $character-size;
         
     | 
| 
      
 364 
     | 
    
         
            +
             
     | 
| 
      
 365 
     | 
    
         
            +
                                        a {
         
     | 
| 
      
 366 
     | 
    
         
            +
                                            text-decoration: none;
         
     | 
| 
      
 367 
     | 
    
         
            +
                                            cursor: pointer;
         
     | 
| 
      
 368 
     | 
    
         
            +
                                            font-size: 1.5em;
         
     | 
| 
      
 369 
     | 
    
         
            +
                                            vertical-align: middle;
         
     | 
| 
      
 370 
     | 
    
         
            +
                                            display: table-cell;
         
     | 
| 
      
 371 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 372 
     | 
    
         
            +
             
     | 
| 
      
 373 
     | 
    
         
            +
                                        .item-info {
         
     | 
| 
      
 374 
     | 
    
         
            +
                                            position: absolute;
         
     | 
| 
      
 375 
     | 
    
         
            +
                                            left: 0;
         
     | 
| 
      
 376 
     | 
    
         
            +
                                            top: 0;
         
     | 
| 
      
 377 
     | 
    
         
            +
                                            right: 0;
         
     | 
| 
      
 378 
     | 
    
         
            +
                                            bottom: 0;
         
     | 
| 
      
 379 
     | 
    
         
            +
                                            width: $character-size;
         
     | 
| 
      
 380 
     | 
    
         
            +
                                            height: $character-size;
         
     | 
| 
      
 381 
     | 
    
         
            +
             
     | 
| 
      
 382 
     | 
    
         
            +
                                            color: gray;
         
     | 
| 
      
 383 
     | 
    
         
            +
             
     | 
| 
      
 384 
     | 
    
         
            +
                                            .name {
         
     | 
| 
      
 385 
     | 
    
         
            +
                                                position: absolute;
         
     | 
| 
      
 386 
     | 
    
         
            +
                                                left: $border-size * 2;
         
     | 
| 
      
 387 
     | 
    
         
            +
                                                top: $border-size * 2;
         
     | 
| 
      
 388 
     | 
    
         
            +
             
     | 
| 
      
 389 
     | 
    
         
            +
                                                font-size: 1.5em;
         
     | 
| 
      
 390 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 391 
     | 
    
         
            +
             
     | 
| 
      
 392 
     | 
    
         
            +
                                            .attributes {
         
     | 
| 
      
 393 
     | 
    
         
            +
                                                position: absolute;
         
     | 
| 
      
 394 
     | 
    
         
            +
                                                left: $border-size * 2;
         
     | 
| 
      
 395 
     | 
    
         
            +
                                                bottom: $border-size * 2;
         
     | 
| 
      
 396 
     | 
    
         
            +
             
     | 
| 
      
 397 
     | 
    
         
            +
                                                font-size: 0.8em;
         
     | 
| 
      
 398 
     | 
    
         
            +
                                                line-height: 1.1em;
         
     | 
| 
      
 399 
     | 
    
         
            +
                                                text-align: left;
         
     | 
| 
      
 400 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 401 
     | 
    
         
            +
             
     | 
| 
      
 402 
     | 
    
         
            +
                                            a.remove-button {
         
     | 
| 
      
 403 
     | 
    
         
            +
                                                position: absolute;
         
     | 
| 
      
 404 
     | 
    
         
            +
                                                right: $border-size * 2;
         
     | 
| 
      
 405 
     | 
    
         
            +
                                                top: $border-size * 2;
         
     | 
| 
      
 406 
     | 
    
         
            +
                                                padding-left: 0.5em;
         
     | 
| 
      
 407 
     | 
    
         
            +
                                                padding-bottom: 0.5em;
         
     | 
| 
      
 408 
     | 
    
         
            +
             
     | 
| 
      
 409 
     | 
    
         
            +
                                                z-index: 1;
         
     | 
| 
      
 410 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 411 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 412 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 413 
     | 
    
         
            +
             
     | 
| 
      
 414 
     | 
    
         
            +
                                    .item.active, .item.active.error {
         
     | 
| 
      
 415 
     | 
    
         
            +
                                        a.costume {
         
     | 
| 
      
 416 
     | 
    
         
            +
                                            border: $border-size solid $border-color;
         
     | 
| 
      
 417 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 418 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 419 
     | 
    
         
            +
             
     | 
| 
      
 420 
     | 
    
         
            +
                                    .item.error {
         
     | 
| 
      
 421 
     | 
    
         
            +
                                        a.costume {
         
     | 
| 
      
 422 
     | 
    
         
            +
                                            border: $border-size solid #b94a48;
         
     | 
| 
      
 423 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 424 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 425 
     | 
    
         
            +
             
     | 
| 
      
 426 
     | 
    
         
            +
                                    a.costume {
         
     | 
| 
      
 427 
     | 
    
         
            +
                                        position: relative;
         
     | 
| 
      
 428 
     | 
    
         
            +
                                        overflow: hidden;
         
     | 
| 
      
 429 
     | 
    
         
            +
                                        display: table-cell;
         
     | 
| 
      
 430 
     | 
    
         
            +
                                        text-align: center;
         
     | 
| 
      
 431 
     | 
    
         
            +
                                        vertical-align: middle;
         
     | 
| 
      
 432 
     | 
    
         
            +
             
     | 
| 
      
 433 
     | 
    
         
            +
                                        width: $character-size - $border-size * 2;
         
     | 
| 
      
 434 
     | 
    
         
            +
                                        height: $character-size - $border-size * 2;
         
     | 
| 
      
 435 
     | 
    
         
            +
             
     | 
| 
      
 436 
     | 
    
         
            +
                                        border: $border-size solid white;
         
     | 
| 
      
 437 
     | 
    
         
            +
             
     | 
| 
      
 438 
     | 
    
         
            +
                                        img, div {
         
     | 
| 
      
 439 
     | 
    
         
            +
                                            margin: -$border-size;
         
     | 
| 
      
 440 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 441 
     | 
    
         
            +
             
     | 
| 
      
 442 
     | 
    
         
            +
                                        img {
         
     | 
| 
      
 443 
     | 
    
         
            +
                                            max-width: $character-size;
         
     | 
| 
      
 444 
     | 
    
         
            +
                                            max-height: $character-size;
         
     | 
| 
      
 445 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 446 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 447 
     | 
    
         
            +
             
     | 
| 
      
 448 
     | 
    
         
            +
                                    a.costume:hover {
         
     | 
| 
      
 449 
     | 
    
         
            +
                                        border: $border-size solid $border-color;
         
     | 
| 
      
 450 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 451 
     | 
    
         
            +
             
     | 
| 
      
 452 
     | 
    
         
            +
                                    a#character-modal-add-costume-button {
         
     | 
| 
      
 453 
     | 
    
         
            +
                                        text-align: center;
         
     | 
| 
      
 454 
     | 
    
         
            +
                                        vertical-align: middle;
         
     | 
| 
      
 455 
     | 
    
         
            +
                                        font-size: 1em;
         
     | 
| 
      
 456 
     | 
    
         
            +
             
     | 
| 
      
 457 
     | 
    
         
            +
                                        border: $border-size dashed lightgray;
         
     | 
| 
      
 458 
     | 
    
         
            +
             
     | 
| 
      
 459 
     | 
    
         
            +
                                        i {
         
     | 
| 
      
 460 
     | 
    
         
            +
                                            font-size: 2em;
         
     | 
| 
      
 461 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 462 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 463 
     | 
    
         
            +
             
     | 
| 
      
 464 
     | 
    
         
            +
                                    a#character-modal-add-costume-button:hover {
         
     | 
| 
      
 465 
     | 
    
         
            +
                                        border: $border-size dashed $border-color;
         
     | 
| 
      
 466 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 467 
     | 
    
         
            +
                                }
         
     | 
| 
      
 468 
     | 
    
         
            +
                            }
         
     | 
| 
       347 
469 
     | 
    
         | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
      
 470 
     | 
    
         
            +
                            #character-modal-right-pane-inner-right-pane {
         
     | 
| 
      
 471 
     | 
    
         
            +
                                margin-left: $inner-left-pane-width;
         
     | 
| 
      
 472 
     | 
    
         
            +
                                position: absolute;
         
     | 
| 
      
 473 
     | 
    
         
            +
                                left: 0;
         
     | 
| 
      
 474 
     | 
    
         
            +
                                top: 0;
         
     | 
| 
      
 475 
     | 
    
         
            +
                                right: 0;
         
     | 
| 
      
 476 
     | 
    
         
            +
                                bottom: 0;
         
     | 
| 
      
 477 
     | 
    
         
            +
                                width: $character-size * 3 + $scrollbar-width;
         
     | 
| 
      
 478 
     | 
    
         
            +
                                height: 100%;
         
     | 
| 
      
 479 
     | 
    
         
            +
             
     | 
| 
      
 480 
     | 
    
         
            +
                                overflow: hidden;
         
     | 
| 
      
 481 
     | 
    
         
            +
             
     | 
| 
      
 482 
     | 
    
         
            +
                                #character-modal-costume-selector {
         
     | 
| 
      
 483 
     | 
    
         
            +
                                    overflow-y: scroll;
         
     | 
| 
      
 484 
     | 
    
         
            +
                                    height: 504px - 30px - $scrollbar-width;
         
     | 
| 
      
 485 
     | 
    
         
            +
             
     | 
| 
      
 486 
     | 
    
         
            +
                                    ul.thumbnails {
         
     | 
| 
      
 487 
     | 
    
         
            +
                                        margin: 0 0 $modal-body-margin 0;
         
     | 
| 
      
 488 
     | 
    
         
            +
             
     | 
| 
      
 489 
     | 
    
         
            +
                                        li {
         
     | 
| 
      
 490 
     | 
    
         
            +
                                            margin-left: $modal-body-margin;
         
     | 
| 
      
 491 
     | 
    
         
            +
                                            margin-bottom: $modal-body-margin;
         
     | 
| 
      
 492 
     | 
    
         
            +
                                            position: relative;
         
     | 
| 
      
 493 
     | 
    
         
            +
             
     | 
| 
      
 494 
     | 
    
         
            +
                                            a {
         
     | 
| 
      
 495 
     | 
    
         
            +
                                                text-decoration: none;
         
     | 
| 
      
 496 
     | 
    
         
            +
                                                cursor: pointer;
         
     | 
| 
      
 497 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 498 
     | 
    
         
            +
             
     | 
| 
      
 499 
     | 
    
         
            +
                                            a#character-modal-upload-costume {
         
     | 
| 
      
 500 
     | 
    
         
            +
                                                width: $character-size;
         
     | 
| 
      
 501 
     | 
    
         
            +
                                                height: $character-size;
         
     | 
| 
      
 502 
     | 
    
         
            +
             
     | 
| 
      
 503 
     | 
    
         
            +
                                                vertical-align: middle;
         
     | 
| 
      
 504 
     | 
    
         
            +
                                                display: table-cell;
         
     | 
| 
      
 505 
     | 
    
         
            +
                                                text-align: center;
         
     | 
| 
      
 506 
     | 
    
         
            +
                                                font-size: 1em;
         
     | 
| 
      
 507 
     | 
    
         
            +
             
     | 
| 
      
 508 
     | 
    
         
            +
                                                border: $border-size dashed lightgray;
         
     | 
| 
      
 509 
     | 
    
         
            +
             
     | 
| 
      
 510 
     | 
    
         
            +
                                                i {
         
     | 
| 
      
 511 
     | 
    
         
            +
                                                    font-size: 2em;
         
     | 
| 
      
 512 
     | 
    
         
            +
                                                }
         
     | 
| 
      
 513 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 514 
     | 
    
         
            +
             
     | 
| 
      
 515 
     | 
    
         
            +
                                            a#character-modal-upload-costume:hover {
         
     | 
| 
      
 516 
     | 
    
         
            +
                                                border: $border-size dashed $border-color;
         
     | 
| 
      
 517 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 518 
     | 
    
         
            +
             
     | 
| 
      
 519 
     | 
    
         
            +
                                            a.active {
         
     | 
| 
      
 520 
     | 
    
         
            +
                                                background-color: #0088cc;
         
     | 
| 
      
 521 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 522 
     | 
    
         
            +
             
     | 
| 
      
 523 
     | 
    
         
            +
                                            a.remove-button {
         
     | 
| 
      
 524 
     | 
    
         
            +
                                                font-size: 1.5em;
         
     | 
| 
      
 525 
     | 
    
         
            +
                                                position: absolute;
         
     | 
| 
      
 526 
     | 
    
         
            +
                                                right: 0;
         
     | 
| 
      
 527 
     | 
    
         
            +
                                                top: 0;
         
     | 
| 
      
 528 
     | 
    
         
            +
                                                padding-left: 0.5em;
         
     | 
| 
      
 529 
     | 
    
         
            +
                                                padding-bottom: 0.5em;
         
     | 
| 
      
 530 
     | 
    
         
            +
                                                color: #b94a48;
         
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
      
 532 
     | 
    
         
            +
                                                z-index: 1;
         
     | 
| 
      
 533 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 534 
     | 
    
         
            +
                                        }
         
     | 
| 
       350 
535 
     | 
    
         
             
                                    }
         
     | 
| 
       351 
536 
     | 
    
         
             
                                }
         
     | 
| 
       352 
537 
     | 
    
         
             
                            }
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
    
        data/app/assets/templates/.keep
    CHANGED
    
    | 
         
            File without changes
         
     | 
| 
         @@ -7,8 +7,9 @@ class ApplicationController < ActionController::Base 
     | 
|
| 
       7 
7 
     | 
    
         
             
              # For APIs, you may want to use :null_session instead.
         
     | 
| 
       8 
8 
     | 
    
         
             
              protect_from_forgery with: :exception
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              helper_method :standalone?, :raspberrypi?, 
     | 
| 
       11 
     | 
    
         
            -
                            : 
     | 
| 
      
 10 
     | 
    
         
            +
              helper_method :standalone?, :raspberrypi?,
         
     | 
| 
      
 11 
     | 
    
         
            +
                            :signed_in?,
         
     | 
| 
      
 12 
     | 
    
         
            +
                            :current_user, :current_preferences
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
              before_filter :set_locale
         
     | 
| 
       14 
15 
     | 
    
         
             
              before_filter :reload_preference if Rails.env.development?
         
     | 
| 
         @@ -66,6 +67,11 @@ class ApplicationController < ActionController::Base 
     | 
|
| 
       66 
67 
     | 
    
         
             
                end
         
     | 
| 
       67 
68 
     | 
    
         
             
              end
         
     | 
| 
       68 
69 
     | 
    
         | 
| 
      
 70 
     | 
    
         
            +
              # whether signed in or not.
         
     | 
| 
      
 71 
     | 
    
         
            +
              def signed_in?
         
     | 
| 
      
 72 
     | 
    
         
            +
                session[:username]
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       69 
75 
     | 
    
         
             
              def current_user
         
     | 
| 
       70 
76 
     | 
    
         
             
                @current_user ||= User.where(name: session[:username]).first
         
     | 
| 
       71 
77 
     | 
    
         
             
              end
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1,58 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class CostumesController < ApplicationController
         
     | 
| 
      
 2 
     | 
    
         
            +
              layout false
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              before_filter :check_whether_standalone, only: [:show, :create, :destroy]
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              def index
         
     | 
| 
      
 7 
     | 
    
         
            +
                if signed_in?
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @costumes = current_user.costumes.with_preset
         
     | 
| 
      
 9 
     | 
    
         
            +
                else
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @costumes = Costume.presets
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
                @costumes = @costumes.merge(Costume.default_order)
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def show
         
     | 
| 
      
 16 
     | 
    
         
            +
                name = params[:basename].sub(/\.png$/, "")
         
     | 
| 
      
 17 
     | 
    
         
            +
                costume = current_user.costumes.where(name: name).first
         
     | 
| 
      
 18 
     | 
    
         
            +
                send_file costume.path,
         
     | 
| 
      
 19 
     | 
    
         
            +
                          type: "image/png", disposition: "inline", x_send_file: true
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def create
         
     | 
| 
      
 23 
     | 
    
         
            +
                max_position =
         
     | 
| 
      
 24 
     | 
    
         
            +
                  current_user.costumes.order(position: :desc).first.try(:position) || -1
         
     | 
| 
      
 25 
     | 
    
         
            +
                attrs = {
         
     | 
| 
      
 26 
     | 
    
         
            +
                  basename: costume_params[:file].original_filename,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  preset: false,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  position: max_position + 1,
         
     | 
| 
      
 29 
     | 
    
         
            +
                }
         
     | 
| 
      
 30 
     | 
    
         
            +
                costume = current_user.costumes.create!(attrs)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                path = costume.path
         
     | 
| 
      
 33 
     | 
    
         
            +
                FileUtils.mkdir_p(path.dirname)
         
     | 
| 
      
 34 
     | 
    
         
            +
                File.open(path, "wb") do |f|
         
     | 
| 
      
 35 
     | 
    
         
            +
                  f.write(costume_params[:file].read)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                index
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                render action: "index"
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              def destroy
         
     | 
| 
      
 44 
     | 
    
         
            +
                costume = current_user.costumes.where(id: params[:id]).first
         
     | 
| 
      
 45 
     | 
    
         
            +
                FileUtils.rm_f(costume.path)
         
     | 
| 
      
 46 
     | 
    
         
            +
                costume.destroy
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                index
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                render action: "index"
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              private
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def costume_params
         
     | 
| 
      
 56 
     | 
    
         
            +
                params.require(:costume).permit(:file)
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
         
            File without changes
         
     | 
    
        data/app/mailers/.keep
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        data/app/models/.keep
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        data/app/models/concerns/.keep
    CHANGED
    
    | 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -4,12 +4,22 @@ module RubyToBlock 
     | 
|
| 
       4 
4 
     | 
    
         
             
                # ソースコードに含まれるキャラクターを表現するクラス
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Character < Base
         
     | 
| 
       6 
6 
     | 
    
         
             
                  # rubocop:disable LineLength
         
     | 
| 
       7 
     | 
    
         
            -
                  blocknize '^\s* 
     | 
| 
      
 7 
     | 
    
         
            +
                  blocknize ['^\s*',
         
     | 
| 
      
 8 
     | 
    
         
            +
                             '(\S+)', '\s*=\s*', 'Character\.new\(',
         
     | 
| 
      
 9 
     | 
    
         
            +
                             'costume:\s*("[^"]+"|\[\s*"[^"]+"\s*(?:,\s*"[^"]+".*)*\])\s*',
         
     | 
| 
      
 10 
     | 
    
         
            +
                             '(?:,\s*costume_index:\s*(\d+)\s*)?',
         
     | 
| 
      
 11 
     | 
    
         
            +
                             ',\s*x:\s*(\d+)\s*',
         
     | 
| 
      
 12 
     | 
    
         
            +
                             ',\s*y:\s*(\d+)\s*',
         
     | 
| 
      
 13 
     | 
    
         
            +
                             ',\s*angle:\s*(\d+)\s*',
         
     | 
| 
      
 14 
     | 
    
         
            +
                             '(?:,\s*rotation_style:\s+:(free|left_right|none)\s*)?',
         
     | 
| 
      
 15 
     | 
    
         
            +
                             '\)',
         
     | 
| 
      
 16 
     | 
    
         
            +
                             '\s*$'].join(""),
         
     | 
| 
       8 
17 
     | 
    
         
             
                            statement: true
         
     | 
| 
       9 
18 
     | 
    
         
             
                  # rubocop:enable LineLength
         
     | 
| 
       10 
19 
     | 
    
         | 
| 
       11 
20 
     | 
    
         
             
                  attr_accessor :name
         
     | 
| 
       12 
21 
     | 
    
         
             
                  attr_accessor :costumes
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attr_accessor :costume_index
         
     | 
| 
       13 
23 
     | 
    
         
             
                  attr_accessor :x
         
     | 
| 
       14 
24 
     | 
    
         
             
                  attr_accessor :y
         
     | 
| 
       15 
25 
     | 
    
         
             
                  attr_accessor :angle
         
     | 
| 
         @@ -18,9 +28,14 @@ module RubyToBlock 
     | 
|
| 
       18 
28 
     | 
    
         
             
                  def self.process_match_data(md, context)
         
     | 
| 
       19 
29 
     | 
    
         
             
                    md2 = regexp.match(md[type])
         
     | 
| 
       20 
30 
     | 
    
         
             
                    name = md2[1]
         
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                                                      
     | 
| 
      
 31 
     | 
    
         
            +
                    costumes = md2[2].scan(/"([^"]+)"/).flatten
         
     | 
| 
      
 32 
     | 
    
         
            +
                    context[:characters][name] = new(name: name,
         
     | 
| 
      
 33 
     | 
    
         
            +
                                                     costumes: costumes,
         
     | 
| 
      
 34 
     | 
    
         
            +
                                                     costume_index: md2[3] || "0",
         
     | 
| 
      
 35 
     | 
    
         
            +
                                                     x: md2[4],
         
     | 
| 
      
 36 
     | 
    
         
            +
                                                     y: md2[5],
         
     | 
| 
      
 37 
     | 
    
         
            +
                                                     angle: md2[6],
         
     | 
| 
      
 38 
     | 
    
         
            +
                                                     rotation_style: md2[7] || "free")
         
     | 
| 
       24 
39 
     | 
    
         | 
| 
       25 
40 
     | 
    
         
             
                    true
         
     | 
| 
       26 
41 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -28,6 +43,7 @@ module RubyToBlock 
     | 
|
| 
       28 
43 
     | 
    
         
             
                  def initialize(options)
         
     | 
| 
       29 
44 
     | 
    
         
             
                    @name = options[:name]
         
     | 
| 
       30 
45 
     | 
    
         
             
                    @costumes = options[:costumes]
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @costume_index = options[:costume_index]
         
     | 
| 
       31 
47 
     | 
    
         
             
                    @x = options[:x]
         
     | 
| 
       32 
48 
     | 
    
         
             
                    @y = options[:y]
         
     | 
| 
       33 
49 
     | 
    
         
             
                    @angle = options[:angle]
         
     | 
| 
         @@ -36,14 +52,19 @@ module RubyToBlock 
     | 
|
| 
       36 
52 
     | 
    
         | 
| 
       37 
53 
     | 
    
         
             
                  def to_xml(parent)
         
     | 
| 
       38 
54 
     | 
    
         
             
                    attrs = {
         
     | 
| 
       39 
     | 
    
         
            -
                       
     | 
| 
       40 
     | 
    
         
            -
                       
     | 
| 
       41 
     | 
    
         
            -
                       
     | 
| 
       42 
     | 
    
         
            -
                       
     | 
| 
       43 
     | 
    
         
            -
                       
     | 
| 
      
 55 
     | 
    
         
            +
                      "name" => @name,
         
     | 
| 
      
 56 
     | 
    
         
            +
                      "x" => @x,
         
     | 
| 
      
 57 
     | 
    
         
            +
                      "y" => @y,
         
     | 
| 
      
 58 
     | 
    
         
            +
                      "angle" => @angle,
         
     | 
| 
      
 59 
     | 
    
         
            +
                      "costumes" => @costumes.join(","),
         
     | 
| 
       44 
60 
     | 
    
         
             
                    }
         
     | 
| 
       45 
     | 
    
         
            -
                     
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 61 
     | 
    
         
            +
                    if @costume_index != "0"
         
     | 
| 
      
 62 
     | 
    
         
            +
                      attrs["costume_index"] = @costume_index
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                    if @rotation_style != "free"
         
     | 
| 
      
 65 
     | 
    
         
            +
                      attrs["rotation_style"] = @rotation_style
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
                    parent.add_element("character", attrs)
         
     | 
| 
       47 
68 
     | 
    
         
             
                  end
         
     | 
| 
       48 
69 
     | 
    
         
             
                end
         
     | 
| 
       49 
70 
     | 
    
         
             
              end
         
     |