smalruby-editor 0.0.12 → 0.1.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.

Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.travis.yml +2 -0
  4. data/LEGAL +32 -0
  5. data/Rakefile +1 -1
  6. data/app/assets/demos/default.xml +126 -0
  7. data/app/assets/demos/rgb_led_anode.xml +83 -0
  8. data/app/assets/images/favicon.ico +0 -0
  9. data/app/assets/javascripts/application.js +18 -1
  10. data/app/assets/javascripts/block_mode.js.coffee.erb +10 -0
  11. data/app/assets/javascripts/blocks/blockly.js.coffee.erb +34 -0
  12. data/app/assets/javascripts/blocks/character.js.coffee.erb +76 -0
  13. data/app/assets/javascripts/blocks/control.js.coffee.erb +180 -0
  14. data/app/assets/javascripts/blocks/data.js.coffee.erb +6 -0
  15. data/app/assets/javascripts/blocks/etc.js.coffee.erb +6 -0
  16. data/app/assets/javascripts/blocks/events.js.coffee.erb +82 -0
  17. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +313 -0
  18. data/app/assets/javascripts/blocks/looks.js.coffee.erb +163 -0
  19. data/app/assets/javascripts/blocks/motion.js.coffee.erb +297 -0
  20. data/app/assets/javascripts/blocks/operators.js.coffee.erb +279 -0
  21. data/app/assets/javascripts/blocks/pen.js.coffee.erb +6 -0
  22. data/app/assets/javascripts/blocks/ruby.js.coffee.erb +74 -0
  23. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +241 -0
  24. data/app/assets/javascripts/blocks/sound.js.coffee.erb +75 -0
  25. data/{public/favicon.ico → app/assets/javascripts/collections/.keep} +0 -0
  26. data/app/assets/javascripts/collections/character_set.js.coffee +12 -0
  27. data/app/assets/javascripts/generators/ruby.js.coffee.erb +188 -0
  28. data/app/assets/javascripts/models/.keep +0 -0
  29. data/app/assets/javascripts/models/character.js.coffee +66 -0
  30. data/app/assets/javascripts/models/scene.js.coffee +5 -0
  31. data/app/assets/javascripts/models/source_code.js.coffee +64 -0
  32. data/app/assets/javascripts/routers/.keep +0 -0
  33. data/app/assets/javascripts/ruby_mode.js.coffee.erb +12 -0
  34. data/app/assets/javascripts/smalruby.js.coffee +97 -0
  35. data/app/assets/javascripts/views/.keep +0 -0
  36. data/app/assets/javascripts/views/character_modal_view.js.coffee +148 -0
  37. data/app/assets/javascripts/views/character_selector_view.js.coffee +109 -0
  38. data/app/assets/javascripts/views/main_menu_view.js.coffee +264 -0
  39. data/app/assets/stylesheets/editor.css.scss +318 -2
  40. data/app/assets/stylesheets/toolbox.css.scss.erb +62 -0
  41. data/app/assets/templates/.keep +0 -0
  42. data/app/controllers/application_controller.rb +19 -0
  43. data/app/controllers/editor_controller.rb +4 -0
  44. data/app/controllers/source_codes_controller.rb +8 -2
  45. data/app/helpers/application_helper.rb +1 -0
  46. data/app/helpers/editor_helper.rb +46 -0
  47. data/app/models/source_code.rb +49 -6
  48. data/app/views/editor/_block_tab.html.haml +53 -0
  49. data/app/views/editor/_character_modal.html.haml +53 -0
  50. data/app/views/editor/_toolbox.html.haml +384 -0
  51. data/app/views/editor/demo.html.erb +16 -0
  52. data/app/views/editor/index.html.haml +60 -0
  53. data/app/views/layouts/application.html.erb +7 -0
  54. data/config/application.rb +1 -0
  55. data/config/initializers/teaspoon.rb +79 -0
  56. data/config/routes.rb +4 -0
  57. data/lib/smalruby_editor/version.rb +1 -1
  58. data/lib/tasks/gem.rake +7 -4
  59. data/lib/tasks/release.rake +43 -0
  60. data/public/apple-touch-icon.png +0 -0
  61. data/public/blockly/media/1x1.gif +0 -0
  62. data/public/blockly/media/click.mp3 +0 -0
  63. data/public/blockly/media/click.ogg +0 -0
  64. data/public/blockly/media/click.wav +0 -0
  65. data/public/blockly/media/delete.mp3 +0 -0
  66. data/public/blockly/media/delete.ogg +0 -0
  67. data/public/blockly/media/delete.wav +0 -0
  68. data/public/blockly/media/handclosed.cur +0 -0
  69. data/public/blockly/media/handopen.cur +0 -0
  70. data/public/blockly/media/quote0.png +0 -0
  71. data/public/blockly/media/quote1.png +0 -0
  72. data/public/blockly/media/trashbody.png +0 -0
  73. data/public/blockly/media/trashlid.png +0 -0
  74. data/public/blockly/media/tree.png +0 -0
  75. data/public/browserconfig.xml +1 -0
  76. data/public/large.png +0 -0
  77. data/public/smalruby/assets/ball1.png +0 -0
  78. data/public/smalruby/assets/ball2.png +0 -0
  79. data/public/smalruby/assets/ball3.png +0 -0
  80. data/public/smalruby/assets/ball4.png +0 -0
  81. data/public/smalruby/assets/ball5.png +0 -0
  82. data/public/smalruby/assets/ball6.png +0 -0
  83. data/public/smalruby/assets/car1.png +0 -0
  84. data/public/smalruby/assets/car2.png +0 -0
  85. data/public/smalruby/assets/car3.png +0 -0
  86. data/public/smalruby/assets/car4.png +0 -0
  87. data/public/smalruby/assets/cat1.png +0 -0
  88. data/public/smalruby/assets/cat2.png +0 -0
  89. data/public/smalruby/assets/cat3.png +0 -0
  90. data/public/smalruby/assets/frog1.png +0 -0
  91. data/public/smalruby/assets/piano_do.wav +0 -0
  92. data/public/smalruby/assets/piano_do_2.wav +0 -0
  93. data/public/smalruby/assets/piano_fa.wav +0 -0
  94. data/public/smalruby/assets/piano_mi.wav +0 -0
  95. data/public/smalruby/assets/piano_ra.wav +0 -0
  96. data/public/smalruby/assets/piano_re.wav +0 -0
  97. data/public/smalruby/assets/piano_si.wav +0 -0
  98. data/public/smalruby/assets/piano_so.wav +0 -0
  99. data/public/square.png +0 -0
  100. data/public/tiny.png +0 -0
  101. data/public/wide.png +0 -0
  102. data/smalruby-editor.gemspec +4 -0
  103. data/spec/acceptance/block_mode/blocks/character/new.feature +136 -0
  104. data/spec/acceptance/block_mode/blocks/control/await.feature +20 -0
  105. data/spec/acceptance/block_mode/blocks/control/await_until.feature +39 -0
  106. data/spec/acceptance/block_mode/blocks/control/break.feature +20 -0
  107. data/spec/acceptance/block_mode/blocks/control/if.feature +68 -0
  108. data/spec/acceptance/block_mode/blocks/control/if_else.feature +78 -0
  109. data/spec/acceptance/block_mode/blocks/control/loop.feature +45 -0
  110. data/spec/acceptance/block_mode/blocks/control/next.feature +20 -0
  111. data/spec/acceptance/block_mode/blocks/control/redo.feature +20 -0
  112. data/spec/acceptance/block_mode/blocks/control/sleep.feature +41 -0
  113. data/spec/acceptance/block_mode/blocks/control/times.feature +72 -0
  114. data/spec/acceptance/block_mode/blocks/control/until.feature +68 -0
  115. data/spec/acceptance/block_mode/blocks/events/on_click.feature +75 -0
  116. data/spec/acceptance/block_mode/blocks/events/on_hit.feature +83 -0
  117. data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +171 -0
  118. data/spec/acceptance/block_mode/blocks/events/on_start.feature +75 -0
  119. data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +44 -0
  120. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +75 -0
  121. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +75 -0
  122. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +81 -0
  123. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +81 -0
  124. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +87 -0
  125. data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +100 -0
  126. data/spec/acceptance/block_mode/blocks/looks/hide.feature +69 -0
  127. data/spec/acceptance/block_mode/blocks/looks/say.feature +106 -0
  128. data/spec/acceptance/block_mode/blocks/looks/show.feature +69 -0
  129. data/spec/acceptance/block_mode/blocks/looks/vanish.feature +69 -0
  130. data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +81 -0
  131. data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +81 -0
  132. data/spec/acceptance/block_mode/blocks/motion/move.feature +81 -0
  133. data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +98 -0
  134. data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +81 -0
  135. data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +81 -0
  136. data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +92 -0
  137. data/spec/acceptance/block_mode/blocks/motion/self_x.feature +92 -0
  138. data/spec/acceptance/block_mode/blocks/motion/self_y.feature +92 -0
  139. data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +81 -0
  140. data/spec/acceptance/block_mode/blocks/motion/set_x.feature +81 -0
  141. data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +95 -0
  142. data/spec/acceptance/block_mode/blocks/motion/set_y.feature +81 -0
  143. data/spec/acceptance/block_mode/blocks/motion/turn.feature +69 -0
  144. data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +69 -0
  145. data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +114 -0
  146. data/spec/acceptance/block_mode/blocks/sensing/hit.feature +110 -0
  147. data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +91 -0
  148. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +39 -0
  149. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +39 -0
  150. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +91 -0
  151. data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +43 -0
  152. data/spec/acceptance/block_mode/blocks/sound/play.feature +81 -0
  153. data/spec/acceptance/block_mode/demo.feature +49 -0
  154. data/spec/acceptance/{text_editor → ruby_mode}/base.feature +11 -2
  155. data/spec/acceptance/{standalone → ruby_mode}/check.feature +8 -9
  156. data/spec/acceptance/ruby_mode/download.feature +33 -0
  157. data/spec/acceptance/{text_editor → ruby_mode}/load.feature +13 -13
  158. data/spec/acceptance/standalone/run.feature +17 -0
  159. data/spec/acceptance/standalone/save.feature +6 -6
  160. data/spec/helpers/editor_helper_spec.rb +110 -10
  161. data/spec/javascripts/collections/character_set_spec.coffee +41 -0
  162. data/spec/javascripts/models/character_spec.coffee +146 -0
  163. data/spec/javascripts/models/scene_spec.coffee +15 -0
  164. data/spec/javascripts/spec_helper.js +29 -0
  165. data/spec/spec_helper.rb +3 -8
  166. data/spec/steps/block_mode_steps.rb +37 -0
  167. data/spec/steps/global_variable.rb +30 -6
  168. data/spec/steps/text_editor_steps.rb +20 -2
  169. data/spec/teaspoon_env.rb +46 -0
  170. data/vendor/assets/javascripts/blockly/blockly_compressed.js +992 -0
  171. data/vendor/assets/javascripts/blockly/blocks_compressed.js +129 -0
  172. data/vendor/assets/javascripts/blockly/msg/js/ja.js +377 -0
  173. data/vendor/assets/javascripts/jquery.blockUI.js +619 -0
  174. metadata +290 -23
  175. data/app/assets/javascripts/editor.js.coffee.erb +0 -137
  176. data/app/views/editor/index.html.erb +0 -22
  177. data/spec/acceptance/text_editor/check.feature +0 -29
  178. data/spec/acceptance/text_editor/save.feature +0 -34
  179. data/spec/support/assets.rb +0 -18
@@ -0,0 +1,16 @@
1
+ <%= render template: 'editor/index' %>
2
+
3
+ <script type="text/javascript">
4
+ $(function() {
5
+ var data = '<%= escape_javascript(File.read(Rails.root.join("app/assets/demos/#{@filename}"))) %>';
6
+ data = $('<div>').html(data).text();
7
+ Smalruby.loadXml(data);
8
+
9
+ <% if @filename != 'default.xml' %>
10
+ var filename = $('<div>').html('<%= escape_javascript(@filename.sub(/\.xml$/, '.rb')) %>').text();
11
+ $('#filename').val(filename)
12
+ <% end %>
13
+
14
+ window.changed = false;
15
+ });
16
+ </script>
@@ -0,0 +1,60 @@
1
+ .navbar{:id => "main-menu", :class => 'navbar-inverse'}
2
+ .navbar-inner
3
+ %ul.nav{:id => 'tabs'}
4
+ %li.active
5
+ %a{:href => '#block-tab', :'data-toggle' => 'tab'}<
6
+ %i.icon-folder-close
7
+ ブロック
8
+ %li
9
+ %a{:href => '#ruby-tab', :'data-toggle' => 'tab'}<
10
+ %i.icon-pencil
11
+ Ruby
12
+
13
+ = form_tag(source_codes_load_path, id: "file-form", class: "navbar-form pull-right", method: "post", multipart: true) do
14
+ %input#load-file{:type => 'file', :name => 'source_code[file]', :style => 'display: none'}
15
+ %input#filename{:type => 'text', :class => 'span4', :placeholder => 'プログラムの名前を入れてね(例:01.rb)'}
16
+ = link_to '', source_codes_download_path, id: 'download-link', style: 'display: none', 'data-method' => 'delete'
17
+
18
+ - if standalone?
19
+ %button#run-button{:class => "btn btn-primary"}<
20
+ %i.icon-play
21
+ 実行
22
+ - else
23
+ %button#download-button{:class => "btn btn-primary"}<
24
+ %i.icon-download-alt
25
+ ダウンロード
26
+
27
+ .btn-group
28
+ %a#submenu-button{:class => "dropdown-toggle btn btn-primary", :"data-toggle" => "dropdown", :href => "#"}
29
+ %i.icon-reorder
30
+ %ul.dropdown-menu{:class => "pull-right"}
31
+ %li
32
+ %a#load-button
33
+ %h4
34
+ %i.icon-folder-open
35
+ ロード
36
+ - if standalone?
37
+ %li
38
+ %a#save-button
39
+ %h4
40
+ %i.icon-hdd
41
+ セーブ
42
+ %li
43
+ %a#check-button
44
+ %h4
45
+ %i.icon-check
46
+ チェック
47
+ %li
48
+ %a#reset-button
49
+ %h4
50
+ %i.icon-off
51
+ リセット
52
+
53
+ #messages
54
+
55
+ #modes-container{:class => 'tab-content'}
56
+ #block-tab{:class => 'tab-pane active modes-tab-pane'}
57
+ = render 'block_tab'
58
+
59
+ #ruby-tab{:class => 'tab-pane modes-tab-pane'}
60
+ #text-editor
@@ -3,6 +3,13 @@
3
3
  <head>
4
4
  <title>smalruby-editor</title>
5
5
  <%= favicon_link_tag %>
6
+ <link rel="apple-touch-icon" href="apple-touch-icon.png" />
7
+ <meta name="application-name" content="Smalruby" />
8
+ <meta name="msapplication-TileColor" content="#0088cc" />
9
+ <meta name="msapplication-square70x70logo" content="tiny.png" />
10
+ <meta name="msapplication-square150x150logo" content="square.png" />
11
+ <meta name="msapplication-wide310x150logo" content="wide.png" />
12
+ <meta name="msapplication-square310x310logo" content="large.png" />
6
13
  <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
7
14
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
8
15
  <%= csrf_meta_tags %>
@@ -12,5 +12,6 @@ module SmalrubyEditor
12
12
  config.time_zone = 'Tokyo'
13
13
  # config.i18n.default_locale = :ja
14
14
  config.colorize_logging = false
15
+ config.filter_parameters += [:data]
15
16
  end
16
17
  end
@@ -0,0 +1,79 @@
1
+ # rubocop:disable LeadingCommentSpace,RegexpLiteral
2
+ Teaspoon.setup do |config|
3
+ # This determines where the Teaspoon routes will be
4
+ # mounted. Changing this to '/jasmine' would allow you to browse to
5
+ # http://localhost:3000/jasmine to run your specs.
6
+ config.mount_at = '/teaspoon'
7
+
8
+ # This defaults to Rails.root if left nil. If you're testing an
9
+ # engine using a dummy application it can be useful to set this to
10
+ # your engines root.. E.g. `Teaspoon::Engine.root`
11
+ config.root = nil
12
+
13
+ # These paths are appended to the Rails assets paths (relative to
14
+ # config.root), and by default is an array that you can replace or
15
+ # add to.
16
+ config.asset_paths = ['spec/javascripts', 'spec/javascripts/stylesheets']
17
+
18
+ # Fixtures are rendered through a standard controller. This means
19
+ # you can use things like HAML or RABL/JBuilder, etc. to generate
20
+ # fixtures within this path.
21
+ config.fixture_path = 'spec/javascripts/fixtures'
22
+
23
+ # You can modify the default suite configuration and create new
24
+ # suites here. Suites can be isolated from one another. When
25
+ # defining a suite you can provide a name and a block. If the name
26
+ # is left blank, :default is assumed. You can omit various
27
+ # directives and the defaults will be used.
28
+ #
29
+ # To run a specific suite
30
+ # - in the browser: http://localhost/teaspoon/[suite_name]
31
+ # - from the command line: rake teaspoon suite=[suite_name]
32
+ config.suite do |suite|
33
+ # You can specify a file matcher and all matching files will be
34
+ # loaded when the suite is run. It's important that these files
35
+ # are serve-able from sprockets.
36
+ #
37
+ # Note: Can also be set to nil.
38
+ suite.matcher =
39
+ '{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}'
40
+
41
+ # Each suite can load a different helper, which can in turn
42
+ # require additional files. This file is loaded before your specs
43
+ # are loaded, and can be used as a manifest.
44
+ suite.helper = 'spec_helper'
45
+
46
+ # These are the core Teaspoon javascripts. It's strongly
47
+ # encouraged to include only the base files here. You can require
48
+ # other support libraries in your spec helper, which allows you to
49
+ # change them without having to restart the server.
50
+ #
51
+ # Available frameworks: teaspoon-jasmine, teaspoon-mocha, teaspoon-qunit
52
+ #
53
+ # Note: To use the CoffeeScript source files use `'teaspoon/jasmine'` etc.
54
+ suite.javascripts = ['teaspoon-jasmine']
55
+
56
+ # If you want to change how Teaspoon looks, or include your own
57
+ # stylesheets you can do that here. The default is the stylesheet
58
+ # for the HTML reporter.
59
+ suite.stylesheets = ['teaspoon']
60
+
61
+ # When running coverage reports, you probably want to exclude
62
+ # libraries that you're not testing. Accepts an array of
63
+ # filenames or regular expressions. The default is to exclude
64
+ # assets from vendors or gems.
65
+ suite.no_coverage =
66
+ [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/},
67
+ %r{/(.+)_helper.}]
68
+ # excludes jquery from coverage reports
69
+ # suite.no_coverage << 'jquery.min.js'
70
+ end
71
+
72
+ # Example suite. Since we're just filtering to files already within
73
+ # the root spec/javascripts, these files will also be run in the
74
+ # default suite -- but can be focused into a more specific suite.
75
+ #config.suite :targeted do |suite|
76
+ # suite.matcher = 'spec/javascripts/targeted/*_spec.{js,js.coffee,coffee}'
77
+ #end
78
+ end if defined?(Teaspoon) && Teaspoon.respond_to?(:setup)
79
+ # let Teaspoon be undefined outside of development/test/asset groups
data/config/routes.rb CHANGED
@@ -2,11 +2,15 @@
2
2
  SmalrubyEditor::Application.routes.draw do
3
3
  root 'editor#index'
4
4
 
5
+ match '/demo(/:filename)' => 'editor#demo',
6
+ defaults: { filename: 'default' }, via: :get
7
+
5
8
  resources :source_codes, only: [:create]
6
9
  post 'source_codes/check'
7
10
  delete 'source_codes/download'
8
11
  post 'source_codes/load'
9
12
  delete 'source_codes/write'
13
+ post 'source_codes/run'
10
14
 
11
15
  # The priority is based upon order of creation: first created ->
12
16
  # highest priority.
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.0.12'
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/tasks/gem.rake CHANGED
@@ -1,10 +1,13 @@
1
- require 'bundler/gem_tasks'
1
+ require 'bundler/gem_helper'
2
+
3
+ namespace :gem do
4
+ Bundler::GemHelper.install_tasks
5
+ end
2
6
 
3
7
  task 'assets:precompile:standalone' do
4
8
  Rails.env = ENV['RAILS_ENV'] = 'standalone'
9
+ Rake::Task['assets:precompile'].reenable
5
10
  Rake::Task['assets:precompile'].invoke
6
11
  end
7
12
 
8
- task 'build' => ['assets:clobber', 'assets:precompile:standalone']
9
-
10
-
13
+ task 'gem:build' => ['assets:clobber', 'assets:precompile:standalone']
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ task :build do
4
+ ENV['GEM_PLATFORM'] = 'linux'
5
+ Rake::Task['gem:build'].invoke
6
+
7
+ ENV['GEM_PLATFORM'] = 'x86-mingw32'
8
+ Rake::Task['gem:build'].reenable
9
+ Rake::Task['assets:clobber'].reenable
10
+ Rake::Task['assets:precompile:standalone'].reenable
11
+ Rake::Task['gem:build'].invoke
12
+ end
13
+
14
+ task :release do
15
+ ENV['GEM_PLATFORM'] = 'linux'
16
+ Rake::Task['gem:release'].invoke
17
+
18
+ ENV['GEM_PLATFORM'] = 'x86-mingw32'
19
+ Rake::Task['gem:release'].reenable
20
+ Rake::Task['gem:build'].reenable
21
+ Rake::Task['assets:clobber'].reenable
22
+ Rake::Task['assets:precompile:standalone'].reenable
23
+ Rake::Task['gem:release'].invoke
24
+
25
+ sh 'git mirror'
26
+ sh 'relish push smalruby/smalruby-editor'
27
+
28
+ require 'lib/smalruby_editor/version'
29
+ next_version = SmalrubyEditor::VERSION.split('.').tap { |versions|
30
+ versions[-1] = (versions[-1].to_i + 1).to_s
31
+ }.join('.')
32
+ File.open('lib/smalruby_editor/version.rb', 'w+') do |f|
33
+ lines = []
34
+ while line = f.gets
35
+ line = "#{$1} '#{next_version}'\n" if /(\s*VERSION = )/.match(line)
36
+ lines << line
37
+ end
38
+ f.rewind
39
+ f.write(lines.join("\n"))
40
+ end
41
+ sh "git commit -m 'バージョンを#{next_version}に更新'"
42
+ sh 'git push'
43
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><browserconfig><msapplication><tile><square70x70logo src="tiny.png"/><square150x150logo src="square.png"/><wide310x150logo src="wide.png"/><square310x310logo src="large.png"/><TileColor>#0088cc</TileColor></tile></msapplication></browserconfig>
data/public/large.png ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/public/square.png ADDED
Binary file
data/public/tiny.png ADDED
Binary file
data/public/wide.png ADDED
Binary file
@@ -70,6 +70,10 @@ Gem::Specification.new do |spec|
70
70
  ['shared-mime-info'],
71
71
  ['launchy'],
72
72
  ['mime-types', '~> 1.16'],
73
+ ['haml-rails'],
74
+ ['jquery-ui-rails'],
75
+ ['backbone-on-rails'],
76
+ ['smalruby'],
73
77
  ]
74
78
  runtime_dependencies << ['therubyracer'] unless is_windows
75
79
  runtime_dependencies.each do |args|
@@ -0,0 +1,136 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: character_new - 「キャラクター」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+ かつ 次のキャラクターを追加する:
8
+ | name | costumes | x | y | angle |
9
+ | car1 | car4.png | 300 | 200 | 90 |
10
+
11
+ もし 次のブロックを配置する:
12
+ """
13
+ %block{:type => "character_new", :x => "0", :y => "0"}
14
+ %field{:name => "NAME"}<
15
+ car1
16
+ """
17
+ かつ ブロックからソースコードを生成する
18
+
19
+ ならば テキストエディタのプログラムは以下であること:
20
+ """
21
+ require "smalruby"
22
+
23
+ car1 = Character.new(costume: "car4.png", x: 300, y: 200, angle: 90)
24
+
25
+ """
26
+
27
+ シナリオ: ブロックとその内部にキャラクターの操作ブロックを配置する
28
+ 前提 "ブロック" タブを表示する
29
+ かつ 次のキャラクターを追加する:
30
+ | name | costumes | x | y | angle |
31
+ | car1 | car4.png | 300 | 200 | 90 |
32
+
33
+ もし 次のブロックを配置する:
34
+ """
35
+ %block{:type => "character_new", :x => "0", :y => "0"}
36
+ %field{:name => "NAME"}<
37
+ car1
38
+ %statement{:name => "DO"}
39
+ %block{:type => "motion_move", :x => "0", :y => "0"}
40
+ %value{:name => "STEP"}
41
+ %block{:type => "math_number"}
42
+ %field{:name => "NUM"}<
43
+ 10
44
+ """
45
+ かつ ブロックからソースコードを生成する
46
+
47
+ ならば テキストエディタのプログラムは以下であること:
48
+ """
49
+ require "smalruby"
50
+
51
+ car1 = Character.new(costume: "car4.png", x: 300, y: 200, angle: 90)
52
+ car1.move(10)
53
+
54
+ """
55
+
56
+ シナリオ: 複数のブロックとその内部にキャラクターの操作ブロックを配置する
57
+ 前提 "ブロック" タブを表示する
58
+ かつ 次のキャラクターを追加する:
59
+ | name | costumes | x | y | angle |
60
+ | car1 | car4.png | 300 | 200 | 90 |
61
+
62
+ もし 次のブロックを配置する:
63
+ """
64
+ %block{:type => "character_new", :x => "0", :y => "0"}
65
+ %field{:name => "NAME"}<
66
+ car1
67
+ %statement{:name => "DO"}
68
+ %block{:type => "motion_move", :x => "0", :y => "0"}
69
+ %value{:name => "STEP"}
70
+ %block{:type => "math_number"}
71
+ %field{:name => "NUM"}<
72
+ 10
73
+ %block{:type => "character_new", :x => "0", :y => "30"}
74
+ %field{:name => "NAME"}<
75
+ car1
76
+ %statement{:name => "DO"}
77
+ %block{:type => "motion_move", :x => "0", :y => "0"}
78
+ %value{:name => "STEP"}
79
+ %block{:type => "math_number"}
80
+ %field{:name => "NUM"}<
81
+ 5
82
+ """
83
+ かつ ブロックからソースコードを生成する
84
+
85
+ ならば テキストエディタのプログラムは以下であること:
86
+ """
87
+ require "smalruby"
88
+
89
+ car1 = Character.new(costume: "car4.png", x: 300, y: 200, angle: 90)
90
+ car1.move(10)
91
+
92
+ car1.move(5)
93
+
94
+ """
95
+
96
+ シナリオ: 複数のキャラクターのブロックとその内部にキャラクターの操作ブロックを配置する
97
+ 前提 "ブロック" タブを表示する
98
+ かつ 次のキャラクターを追加する:
99
+ | name | costumes | x | y | angle |
100
+ | car1 | car4.png | 300 | 200 | 90 |
101
+ | cat1 | cat2.png | 100 | 400 | 180 |
102
+
103
+ もし 次のブロックを配置する:
104
+ """
105
+ %block{:type => "character_new", :x => "0", :y => "0"}
106
+ %field{:name => "NAME"}<
107
+ car1
108
+ %statement{:name => "DO"}
109
+ %block{:type => "motion_move", :x => "0", :y => "0"}
110
+ %value{:name => "STEP"}
111
+ %block{:type => "math_number"}
112
+ %field{:name => "NUM"}<
113
+ 10
114
+ %block{:type => "character_new", :x => "0", :y => "30"}
115
+ %field{:name => "NAME"}<
116
+ cat1
117
+ %statement{:name => "DO"}
118
+ %block{:type => "motion_move", :x => "0", :y => "0"}
119
+ %value{:name => "STEP"}
120
+ %block{:type => "math_number"}
121
+ %field{:name => "NUM"}<
122
+ 5
123
+ """
124
+ かつ ブロックからソースコードを生成する
125
+
126
+ ならば テキストエディタのプログラムは以下であること:
127
+ """
128
+ require "smalruby"
129
+
130
+ car1 = Character.new(costume: "car4.png", x: 300, y: 200, angle: 90)
131
+ cat1 = Character.new(costume: "cat2.png", x: 100, y: 400, angle: 180)
132
+ car1.move(10)
133
+
134
+ cat1.move(5)
135
+
136
+ """