smalruby-editor 0.1.23 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of smalruby-editor might be problematic. Click here for more details.

Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -1
  3. data/.rubocop.yml +4 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +1 -1
  6. data/Guardfile +45 -0
  7. data/app/assets/javascripts/application.js +0 -1
  8. data/app/assets/javascripts/msg/ja.js +1 -1
  9. data/app/assets/stylesheets/toolbox.css.scss.erb +1 -16
  10. data/app/controllers/source_codes_controller.rb +12 -7
  11. data/app/models/source_code.rb +34 -1
  12. data/app/views/editor/_toolbox.html.haml +155 -143
  13. data/app/views/editor/index.html.haml +4 -4
  14. data/app/views/layouts/application.html.erb +2 -2
  15. data/bin/bundle +1 -1
  16. data/bin/rails +5 -1
  17. data/bin/rake +5 -1
  18. data/bin/rspec +7 -0
  19. data/bin/spring +20 -0
  20. data/bin/teaspoon +7 -0
  21. data/lib/smalruby_editor/version.rb +3 -3
  22. data/public/assets/{application-92fb2e7b8dd198fbfae7f8451c891ba2.css → application-d5358d75a2c4e570c749b333c59b55ab.css} +1 -1
  23. data/public/assets/application-d5358d75a2c4e570c749b333c59b55ab.css.gz +0 -0
  24. data/public/assets/{application-e3cd434424f565fcebf7d7d13353536f.js → application-fda71a642d958ffbaf90185c471d6e51.js} +5 -5
  25. data/public/assets/application-fda71a642d958ffbaf90185c471d6e51.js.gz +0 -0
  26. data/public/assets/{manifest-6094ee90554fe1d9bb1a229d8daa16d7.json → manifest-1a9856df207640ec658271db34b30dbb.json} +1 -1
  27. data/public/assets/msg/{ja-8f29832e96564fb7a0c2280c4d4390b8.js → ja-4d22bd0341f464f9d1b9f373121bce6d.js} +1 -1
  28. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
  29. data/smalruby-editor.gemspec +0 -1
  30. data/spec/models/source_code_spec.rb +88 -1
  31. data/spec/spec_helper.rb +114 -137
  32. metadata +13 -23
  33. data/public/assets/application-92fb2e7b8dd198fbfae7f8451c891ba2.css.gz +0 -0
  34. data/public/assets/application-e3cd434424f565fcebf7d7d13353536f.js.gz +0 -0
  35. data/public/assets/msg/ja-8f29832e96564fb7a0c2280c4d4390b8.js.gz +0 -0
@@ -1 +1 @@
1
- {"files":{"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico":{"logical_path":"favicon.ico","mtime":"2014-12-02T18:24:29+09:00","size":5430,"digest":"d958ba1d3efbea2e9a10fda1b5970b6c"},"application-e3cd434424f565fcebf7d7d13353536f.js":{"logical_path":"application.js","mtime":"2015-01-10T03:03:41+09:00","size":1174904,"digest":"e3cd434424f565fcebf7d7d13353536f"},"msg/en_us-893d970ff8061fbe7459f009582c4df5.js":{"logical_path":"msg/en_us.js","mtime":"2015-01-10T03:02:51+09:00","size":11508,"digest":"893d970ff8061fbe7459f009582c4df5"},"msg/ja-8f29832e96564fb7a0c2280c4d4390b8.js":{"logical_path":"msg/ja.js","mtime":"2015-01-10T03:51:16+09:00","size":12600,"digest":"8f29832e96564fb7a0c2280c4d4390b8"},"application-92fb2e7b8dd198fbfae7f8451c891ba2.css":{"logical_path":"application.css","mtime":"2014-12-10T00:07:54+09:00","size":99008,"digest":"92fb2e7b8dd198fbfae7f8451c891ba2"},"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js":{"logical_path":"blockly/msg/js/en_us.js","mtime":"2014-12-09T15:06:34+09:00","size":25835,"digest":"6f7333af29688596ef863fa36a22cb41"},"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js":{"logical_path":"blockly/msg/js/ja.js","mtime":"2014-12-02T18:28:32+09:00","size":30238,"digest":"d2cbf808bda8180571bc5f39141a98fe"},"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2014-12-10T00:08:49+09:00","size":1738,"digest":"9b629ab5247187e831ea51106acdf03a"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2014-12-10T00:08:49+09:00","size":180,"digest":"e055bc219bd3aed111713c2ef884d6f4"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2014-12-10T00:08:49+09:00","size":178,"digest":"1ed964fd6a424fc2d8653d5a64705840"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2014-12-10T00:08:49+09:00","size":120,"digest":"c47b4313972b0311e02e671fd15a66c9"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2014-12-10T00:08:49+09:00","size":105,"digest":"4b5173f329e3e9fbfcfcc88a84920e81"},"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2014-12-10T00:08:49+09:00","size":111,"digest":"b0155cdc12d3bcdfa7f4890938366181"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2014-12-10T00:08:49+09:00","size":110,"digest":"21014afa81b0fea76840432b22d9d0e5"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2014-12-10T00:08:49+09:00","size":119,"digest":"6526cba95388d3f36f03cc6296f192b5"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2014-12-10T00:08:49+09:00","size":101,"digest":"f0e42cc2ef6523f77aa730753cff0462"},"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2014-12-10T00:08:49+09:00","size":4369,"digest":"d5b2a50ddba8e90f9487cc29efbc9080"},"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2014-12-10T00:08:49+09:00","size":4369,"digest":"735b447c0a9f42ce6836a1e74aad6f23"},"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2014-12-10T00:08:49+09:00","size":4369,"digest":"ed3057724414ea20ff7bae1cdb644aca"},"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2014-12-10T00:08:49+09:00","size":4369,"digest":"ce584ffa171c3ea9a018cf0d7bec65c8"},"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2014-12-10T00:08:49+09:00","size":4369,"digest":"747e96029e8dedcabc224e5f7d1f2ede"},"loading-e77296be32d066d3e29d3bf9803fa417.gif":{"logical_path":"loading.gif","mtime":"2014-12-09T23:47:30+09:00","size":3897,"digest":"e77296be32d066d3e29d3bf9803fa417"},"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif":{"logical_path":"progressbar.gif","mtime":"2014-12-09T23:47:30+09:00","size":3323,"digest":"ee8fb1222f286f625bbf7332844a6a0c"}},"assets":{"favicon.ico":"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico","application.js":"application-e3cd434424f565fcebf7d7d13353536f.js","msg/en_us.js":"msg/en_us-893d970ff8061fbe7459f009582c4df5.js","msg/ja.js":"msg/ja-8f29832e96564fb7a0c2280c4d4390b8.js","application.css":"application-92fb2e7b8dd198fbfae7f8451c891ba2.css","blockly/msg/js/en_us.js":"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js","blockly/msg/js/ja.js":"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png","loading.gif":"loading-e77296be32d066d3e29d3bf9803fa417.gif","progressbar.gif":"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif"}}
1
+ {"files":{"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico":{"logical_path":"favicon.ico","mtime":"2014-12-02T18:24:29+09:00","size":5430,"digest":"d958ba1d3efbea2e9a10fda1b5970b6c"},"application-fda71a642d958ffbaf90185c471d6e51.js":{"logical_path":"application.js","mtime":"2015-01-11T23:15:57+09:00","size":1167563,"digest":"fda71a642d958ffbaf90185c471d6e51"},"msg/en_us-893d970ff8061fbe7459f009582c4df5.js":{"logical_path":"msg/en_us.js","mtime":"2015-01-10T03:02:51+09:00","size":11508,"digest":"893d970ff8061fbe7459f009582c4df5"},"msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js":{"logical_path":"msg/ja.js","mtime":"2015-01-11T14:27:38+09:00","size":12600,"digest":"4d22bd0341f464f9d1b9f373121bce6d"},"application-d5358d75a2c4e570c749b333c59b55ab.css":{"logical_path":"application.css","mtime":"2015-01-16T08:57:59+09:00","size":95948,"digest":"d5358d75a2c4e570c749b333c59b55ab"},"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js":{"logical_path":"blockly/msg/js/en_us.js","mtime":"2014-12-09T15:06:34+09:00","size":25835,"digest":"6f7333af29688596ef863fa36a22cb41"},"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js":{"logical_path":"blockly/msg/js/ja.js","mtime":"2014-12-02T18:28:32+09:00","size":30238,"digest":"d2cbf808bda8180571bc5f39141a98fe"},"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2015-01-11T23:15:23+09:00","size":1738,"digest":"9b629ab5247187e831ea51106acdf03a"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":180,"digest":"e055bc219bd3aed111713c2ef884d6f4"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":178,"digest":"1ed964fd6a424fc2d8653d5a64705840"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":120,"digest":"c47b4313972b0311e02e671fd15a66c9"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":105,"digest":"4b5173f329e3e9fbfcfcc88a84920e81"},"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":111,"digest":"b0155cdc12d3bcdfa7f4890938366181"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":110,"digest":"21014afa81b0fea76840432b22d9d0e5"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":119,"digest":"6526cba95388d3f36f03cc6296f192b5"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-01-11T23:15:23+09:00","size":101,"digest":"f0e42cc2ef6523f77aa730753cff0462"},"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"d5b2a50ddba8e90f9487cc29efbc9080"},"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"735b447c0a9f42ce6836a1e74aad6f23"},"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ed3057724414ea20ff7bae1cdb644aca"},"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ce584ffa171c3ea9a018cf0d7bec65c8"},"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"747e96029e8dedcabc224e5f7d1f2ede"},"loading-e77296be32d066d3e29d3bf9803fa417.gif":{"logical_path":"loading.gif","mtime":"2015-01-11T23:11:45+09:00","size":3897,"digest":"e77296be32d066d3e29d3bf9803fa417"},"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif":{"logical_path":"progressbar.gif","mtime":"2015-01-11T23:11:45+09:00","size":3323,"digest":"ee8fb1222f286f625bbf7332844a6a0c"}},"assets":{"favicon.ico":"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico","application.js":"application-fda71a642d958ffbaf90185c471d6e51.js","msg/en_us.js":"msg/en_us-893d970ff8061fbe7459f009582c4df5.js","msg/ja.js":"msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js","application.css":"application-d5358d75a2c4e570c749b333c59b55ab.css","blockly/msg/js/en_us.js":"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js","blockly/msg/js/ja.js":"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png","loading.gif":"loading-e77296be32d066d3e29d3bf9803fa417.gif","progressbar.gif":"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif"}}
@@ -1 +1 @@
1
- goog.provide("Blockly.Msg.ja.smalruby"),goog.require("Blockly.Msg"),Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES="行",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS="文字",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_COMMA="、",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE="プログラムの変換中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE="プログラムをブロックに変換しています。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR="ブロックへの変換に失敗しました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE="プログラムの実行中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE="プログラムの画面に切り替えてください。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE="プログラムをセーブ・チェックしてから実行するよ♪<br>Escキーを押すとプログラムが終わります。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN="プログラムを実行できませんでした",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN="プログラムの実行をキャンセルしました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE="プログラムのダウンロード中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE="プログラムをダウンロードしています。",Blockly.Msg.BLOCKS_MOTION_MOVE="%1歩動かす",Blockly.Msg.BLOCKS_MOTION_TURN_RIGHT_DEGREES="時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_TURN_LEFT_DEGREES="反時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_POINT_IN_DIRECTION="%1度に向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_MOUSE="マウスポインターへ向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_CHARACTER="へ向ける",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_X="x座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_Y="、y座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_GO_TO_MOUSE="マウスポインターへ行く",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX="",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX="へ行く",Blockly.Msg.BLOCKS_MOTION_CHANGE_X_BY="x座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_X="x座標を%1にする",Blockly.Msg.BLOCKS_MOTION_CHANGE_Y_BY="y座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_Y="y座標を%1にする",Blockly.Msg.BLOCKS_MOTION_TURN_IF_REACH_WALL="もし端に着いたら、跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN="跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN_XY_X="水平(x)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_Y="垂直(y)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_PREFIX="",Blockly.Msg.BLOCKS_MOTION_TURN_XY_SUFFIX="方向に跳ね返る",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT="左右のみ",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_NONE="回転しない",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_FREE="自由に回転",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX="回転方法を",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_SELF_X="x座標",Blockly.Msg.BLOCKS_MOTION_SELF_Y="y座標",Blockly.Msg.BLOCKS_MOTION_SELF_ANGLE="向き",Blockly.Msg.BLOCKS_EVENTS_ON_START="実行ボタンがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX="とき",Blockly.Msg.BLOCKS_EVENTS_ON_CLICK="キャラクターがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_PREFIX="",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_SUFFIX="にぶつかったとき",Blockly.Msg.BLOCKS_SENSING_K_UP="↑",Blockly.Msg.BLOCKS_SENSING_K_DOWN="↓",Blockly.Msg.BLOCKS_SENSING_K_LEFT="←",Blockly.Msg.BLOCKS_SENSING_K_RIGHT="→",Blockly.Msg.BLOCKS_SENSING_K_SPACE="スペース",Blockly.Msg.BLOCKS_SENSING_PUSH="押された",Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN="押され続けている",Blockly.Msg.BLOCKS_SENSING_DOWN=Blockly.Msg.BLOCKS_SENSING_PUSH,Blockly.Msg.BLOCKS_SENSING_M_LBUTTON="左ボタン",Blockly.Msg.BLOCKS_SENSING_M_MBUTTON="中ボタン",Blockly.Msg.BLOCKS_SENSING_M_RBUTTON="右ボタン",Blockly.Msg.BLOCKS_SENSING_UP="押された",Blockly.Msg.BLOCKS_SENSING_REACH_WALL="端に触れた",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX="マウスの",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_X="マウスのx座標",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_Y="マウスのy座標",Blockly.Msg.BLOCKS_SENSING_HIT_PREFIX="",Blockly.Msg.BLOCKS_SENSING_HIT_SUFFIX="に触れた",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_X="x座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_Y="y座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE="向き",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX="コスチューム番号",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME="コスチューム名",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE="大きさ",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME="ボリューム",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE="の",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_YEAR="年",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MONTH="月",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_DAY="日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_WDAY="曜日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_HOUR="時",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MIN="分",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_SEC="秒",Blockly.Msg.BLOCKS_SENSING_TIME_NOW="現在の",Blockly.Msg.BLOCKS_CONTROL_SLEEP="%1秒待つ",Blockly.Msg.BLOCKS_CONTROL_LOOP="ずっと",Blockly.Msg.BLOCKS_CONTROL_LOOP_END="を繰り返す",Blockly.Msg.BLOCKS_CONTROL_BREAK="繰り返しから脱出する",Blockly.Msg.BLOCKS_CONTROL_NEXT="次の繰り返しにジャンプする",Blockly.Msg.BLOCKS_CONTROL_REDO="現在の繰り返しをやり直す",Blockly.Msg.BLOCKS_CONTROL_IF="もし",Blockly.Msg.BLOCKS_CONTROL_THEN="ならば",Blockly.Msg.BLOCKS_CONTROL_ELSE="でなければ",Blockly.Msg.BLOCKS_CONTROL_TIMES="%1回繰り返す",Blockly.Msg.BLOCKS_CONTROL_AWAIT_UNTIL="%1まで待つ",Blockly.Msg.BLOCKS_CONTROL_UNTIL="%1まで",Blockly.Msg.BLOCKS_CONTROL_AWAIT="ほんの少し待つ",Blockly.Msg.BLOCKS_RUBY_STATEMENT="文",Blockly.Msg.BLOCKS_RUBY_EXPRESSION="式",Blockly.Msg.BLOCKS_RUBY_COMMENT="コメント",Blockly.Msg.BLOCKS_FIELD_CHARACTER_NO_CHARACTER="キャラクターなし",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO="ピアノのド",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE="ピアノのレ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI="ピアノのミ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA="ピアノのファ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO="ピアノのソ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA="ピアノのラ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI="ピアノのシ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2="ピアノの高いド",Blockly.Msg.BLOCKS_SOUND_PLAY="%1の音を鳴らす",Blockly.Msg.BLOCKS_LOOKS_SAY="%1と言う",Blockly.Msg.BLOCKS_LOOKS_THINK="%1と考える",Blockly.Msg.BLOCKS_LOOKS_SAY_WITH_SECOND="%1と%2秒と言う",Blockly.Msg.BLOCKS_LOOKS_THINK_WITH_SECOND="%1と%2秒と考える",Blockly.Msg.BLOCKS_LOOKS_SHOW="表示する",Blockly.Msg.BLOCKS_LOOKS_HIDE="隠す",Blockly.Msg.BLOCKS_LOOKS_VANISH="消滅する",Blockly.Msg.BLOCKS_HARDWARE_LED_ON="LED%1をオンにする",Blockly.Msg.BLOCKS_HARDWARE_LED_OFF="LED%1をオフにする",Blockly.Msg.BLOCKS_HARDWARE_ANODE="アノード",Blockly.Msg.BLOCKS_HARDWARE_CATHODE="カソード",Blockly.Msg.BLOCKS_HARDWARE_LEFT=" 左",Blockly.Msg.BLOCKS_HARDWARE_RIGHT="右",Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE="ハードウェアを準備する",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON="set RGB LED %1 common %2 color to %3",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON="RGB LED%1コモン%2を%3にする",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_OFF="RGB LED%1コモン%2をオフにする",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW="7セグディスプレイに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF="7セグディスプレイをオフにする",Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS="LCDに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_LCD_CLEAR="LCDをクリアする",Blockly.Msg.BLOCKS_HARDWARE_SERVO_SET_POSITION="サーボ%1を%2度(5~180)にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD="2WD車%1を進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD="2WD車%1をバックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT="2WD車%1を左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT="2WD車%1を右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP="2WD車%1を止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN="2WD車%2を%3秒%1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_FORWARD="進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_BACKWARD="バックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_LEFT="左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_RIGHT="右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED="2WD車%1の%2の速度(%)を%3にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED="2WD車%1の%2の速度(%)",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD="正転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD="逆転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER="(モータードライバ%1で)モーターを%2",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED="(モータードライバ%1の)モーターの速度を%2にする",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED="(モータードライバ%1の)モーターの速度(%)",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_DOWN_OR_UP="ボタン%1が%2",Blockly.Msg.BLOCKS_HARDWARE_ON_BUTTON_DOWN_OR_UP="ボタン%1が%2とき",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_NOT_USE_PULLUP="ボタン%1のプルアップ抵抗を使わない",Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE="センサー%1",Blockly.Msg.BLOCKS_HARDWARE_ON_SENSOR_CHANGE="センサー%1が変化したとき",Blockly.Msg.BLOCKS_OPERATORS_ADD="%1+%2",Blockly.Msg.BLOCKS_OPERATORS_MINUS="%1ー%2",Blockly.Msg.BLOCKS_OPERATORS_MULTIPLY="%1×%2",Blockly.Msg.BLOCKS_OPERATORS_DIVIDE="%1÷%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LT="%1<%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LTE="%1≦%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_EQ="%1=%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GTE="%1≧%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GT="%1>%2",Blockly.Msg.BLOCKS_OPERATORS_RAND="%1から%2までの乱数",Blockly.Msg.BLOCKS_OPERATORS_AND="%1かつ%2",Blockly.Msg.BLOCKS_OPERATORS_OR="%1または%2",Blockly.Msg.BLOCKS_OPERATORS_NOT="%1ではない",Blockly.Msg.BLOCKS_OPERATORS_INDEX_OF="%1の%2番目",Blockly.Msg.BLOCKS_OPERATORS_LENGTH="%1の長さ",Blockly.Msg.BLOCKS_OPERATORS_MODULO="%1を%2で割った余り",Blockly.Msg.BLOCKS_OPERATORS_ROUND="%1を丸める",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD="%1の%2",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ABS="絶対値",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_FLOOR="切り上げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_CEIL="切り下げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SQRT="平方根",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SIN="sin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_COS="cos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_TAN="tan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ASIN="asin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ACOS="acos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ATAN="atan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LN="log",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LOG="log10",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE="e ^",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE="10 ^",Blockly.Msg.BLOCKS_OPERATORS_TRUE="真",Blockly.Msg.BLOCKS_OPERATORS_FALSE="偽",Blockly.Msg.BLOCKS_PEN_DOWN_PEN="ペンを下ろす",Blockly.Msg.BLOCKS_PEN_UP_PEN="ペンを上げる",Blockly.Msg.BLOCKS_PEN_SET_PEN_COLOR="ペンの色を%1にする";
1
+ goog.provide("Blockly.Msg.ja.smalruby"),goog.require("Blockly.Msg"),Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES="行",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS="文字",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_COMMA="、",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE="プログラムの変換中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE="プログラムをブロックに変換しています。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR="ブロックへの変換に失敗しました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE="プログラムの実行中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE="プログラムの画面に切り替えてください。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE="プログラムをセーブ・チェックしてから実行するよ♪<br>Escキーを押すとプログラムが終わります。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN="プログラムを実行できませんでした",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN="プログラムの実行をキャンセルしました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE="プログラムのダウンロード中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE="プログラムをダウンロードしています。",Blockly.Msg.BLOCKS_MOTION_MOVE="%1歩動かす",Blockly.Msg.BLOCKS_MOTION_TURN_RIGHT_DEGREES="時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_TURN_LEFT_DEGREES="反時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_POINT_IN_DIRECTION="%1度に向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_MOUSE="マウスポインターへ向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_CHARACTER="へ向ける",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_X="x座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_Y="、y座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_GO_TO_MOUSE="マウスポインターへ行く",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX="",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX="へ行く",Blockly.Msg.BLOCKS_MOTION_CHANGE_X_BY="x座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_X="x座標を%1にする",Blockly.Msg.BLOCKS_MOTION_CHANGE_Y_BY="y座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_Y="y座標を%1にする",Blockly.Msg.BLOCKS_MOTION_TURN_IF_REACH_WALL="もし端に着いたら、跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN="跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN_XY_X="水平(x)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_Y="垂直(y)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_PREFIX="",Blockly.Msg.BLOCKS_MOTION_TURN_XY_SUFFIX="方向に跳ね返る",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT="左右のみ",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_NONE="回転しない",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_FREE="自由に回転",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX="回転方法を",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_SELF_X="x座標",Blockly.Msg.BLOCKS_MOTION_SELF_Y="y座標",Blockly.Msg.BLOCKS_MOTION_SELF_ANGLE="向き",Blockly.Msg.BLOCKS_EVENTS_ON_START="実行ボタンがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX="とき",Blockly.Msg.BLOCKS_EVENTS_ON_CLICK="キャラクターがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_PREFIX="",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_SUFFIX="にぶつかったとき",Blockly.Msg.BLOCKS_SENSING_K_UP="↑",Blockly.Msg.BLOCKS_SENSING_K_DOWN="↓",Blockly.Msg.BLOCKS_SENSING_K_LEFT="←",Blockly.Msg.BLOCKS_SENSING_K_RIGHT="→",Blockly.Msg.BLOCKS_SENSING_K_SPACE="スペース",Blockly.Msg.BLOCKS_SENSING_PUSH="押された",Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN="押され続けている",Blockly.Msg.BLOCKS_SENSING_DOWN=Blockly.Msg.BLOCKS_SENSING_PUSH,Blockly.Msg.BLOCKS_SENSING_M_LBUTTON="左ボタン",Blockly.Msg.BLOCKS_SENSING_M_MBUTTON="中ボタン",Blockly.Msg.BLOCKS_SENSING_M_RBUTTON="右ボタン",Blockly.Msg.BLOCKS_SENSING_UP="離された",Blockly.Msg.BLOCKS_SENSING_REACH_WALL="端に触れた",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX="マウスの",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_X="マウスのx座標",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_Y="マウスのy座標",Blockly.Msg.BLOCKS_SENSING_HIT_PREFIX="",Blockly.Msg.BLOCKS_SENSING_HIT_SUFFIX="に触れた",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_X="x座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_Y="y座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE="向き",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX="コスチューム番号",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME="コスチューム名",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE="大きさ",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME="ボリューム",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE="の",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_YEAR="年",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MONTH="月",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_DAY="日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_WDAY="曜日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_HOUR="時",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MIN="分",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_SEC="秒",Blockly.Msg.BLOCKS_SENSING_TIME_NOW="現在の",Blockly.Msg.BLOCKS_CONTROL_SLEEP="%1秒待つ",Blockly.Msg.BLOCKS_CONTROL_LOOP="ずっと",Blockly.Msg.BLOCKS_CONTROL_LOOP_END="を繰り返す",Blockly.Msg.BLOCKS_CONTROL_BREAK="繰り返しから脱出する",Blockly.Msg.BLOCKS_CONTROL_NEXT="次の繰り返しにジャンプする",Blockly.Msg.BLOCKS_CONTROL_REDO="現在の繰り返しをやり直す",Blockly.Msg.BLOCKS_CONTROL_IF="もし",Blockly.Msg.BLOCKS_CONTROL_THEN="ならば",Blockly.Msg.BLOCKS_CONTROL_ELSE="でなければ",Blockly.Msg.BLOCKS_CONTROL_TIMES="%1回繰り返す",Blockly.Msg.BLOCKS_CONTROL_AWAIT_UNTIL="%1まで待つ",Blockly.Msg.BLOCKS_CONTROL_UNTIL="%1まで",Blockly.Msg.BLOCKS_CONTROL_AWAIT="ほんの少し待つ",Blockly.Msg.BLOCKS_RUBY_STATEMENT="文",Blockly.Msg.BLOCKS_RUBY_EXPRESSION="式",Blockly.Msg.BLOCKS_RUBY_COMMENT="コメント",Blockly.Msg.BLOCKS_FIELD_CHARACTER_NO_CHARACTER="キャラクターなし",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO="ピアノのド",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE="ピアノのレ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI="ピアノのミ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA="ピアノのファ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO="ピアノのソ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA="ピアノのラ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI="ピアノのシ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2="ピアノの高いド",Blockly.Msg.BLOCKS_SOUND_PLAY="%1の音を鳴らす",Blockly.Msg.BLOCKS_LOOKS_SAY="%1と言う",Blockly.Msg.BLOCKS_LOOKS_THINK="%1と考える",Blockly.Msg.BLOCKS_LOOKS_SAY_WITH_SECOND="%1と%2秒と言う",Blockly.Msg.BLOCKS_LOOKS_THINK_WITH_SECOND="%1と%2秒と考える",Blockly.Msg.BLOCKS_LOOKS_SHOW="表示する",Blockly.Msg.BLOCKS_LOOKS_HIDE="隠す",Blockly.Msg.BLOCKS_LOOKS_VANISH="消滅する",Blockly.Msg.BLOCKS_HARDWARE_LED_ON="LED%1をオンにする",Blockly.Msg.BLOCKS_HARDWARE_LED_OFF="LED%1をオフにする",Blockly.Msg.BLOCKS_HARDWARE_ANODE="アノード",Blockly.Msg.BLOCKS_HARDWARE_CATHODE="カソード",Blockly.Msg.BLOCKS_HARDWARE_LEFT=" 左",Blockly.Msg.BLOCKS_HARDWARE_RIGHT="右",Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE="ハードウェアを準備する",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON="set RGB LED %1 common %2 color to %3",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_ON="RGB LED%1コモン%2を%3にする",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_OFF="RGB LED%1コモン%2をオフにする",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW="7セグディスプレイに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF="7セグディスプレイをオフにする",Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS="LCDに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_LCD_CLEAR="LCDをクリアする",Blockly.Msg.BLOCKS_HARDWARE_SERVO_SET_POSITION="サーボ%1を%2度(5~180)にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD="2WD車%1を進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD="2WD車%1をバックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT="2WD車%1を左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT="2WD車%1を右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP="2WD車%1を止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN="2WD車%2を%3秒%1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_FORWARD="進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_BACKWARD="バックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_LEFT="左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_RIGHT="右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED="2WD車%1の%2の速度(%)を%3にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED="2WD車%1の%2の速度(%)",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD="正転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD="逆転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER="(モータードライバ%1で)モーターを%2",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED="(モータードライバ%1の)モーターの速度を%2にする",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED="(モータードライバ%1の)モーターの速度(%)",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_DOWN_OR_UP="ボタン%1が%2",Blockly.Msg.BLOCKS_HARDWARE_ON_BUTTON_DOWN_OR_UP="ボタン%1が%2とき",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_NOT_USE_PULLUP="ボタン%1のプルアップ抵抗を使わない",Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE="センサー%1",Blockly.Msg.BLOCKS_HARDWARE_ON_SENSOR_CHANGE="センサー%1が変化したとき",Blockly.Msg.BLOCKS_OPERATORS_ADD="%1+%2",Blockly.Msg.BLOCKS_OPERATORS_MINUS="%1ー%2",Blockly.Msg.BLOCKS_OPERATORS_MULTIPLY="%1×%2",Blockly.Msg.BLOCKS_OPERATORS_DIVIDE="%1÷%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LT="%1<%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LTE="%1≦%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_EQ="%1=%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GTE="%1≧%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GT="%1>%2",Blockly.Msg.BLOCKS_OPERATORS_RAND="%1から%2までの乱数",Blockly.Msg.BLOCKS_OPERATORS_AND="%1かつ%2",Blockly.Msg.BLOCKS_OPERATORS_OR="%1または%2",Blockly.Msg.BLOCKS_OPERATORS_NOT="%1ではない",Blockly.Msg.BLOCKS_OPERATORS_INDEX_OF="%1の%2番目",Blockly.Msg.BLOCKS_OPERATORS_LENGTH="%1の長さ",Blockly.Msg.BLOCKS_OPERATORS_MODULO="%1を%2で割った余り",Blockly.Msg.BLOCKS_OPERATORS_ROUND="%1を丸める",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD="%1の%2",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ABS="絶対値",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_FLOOR="切り上げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_CEIL="切り下げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SQRT="平方根",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SIN="sin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_COS="cos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_TAN="tan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ASIN="asin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ACOS="acos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ATAN="atan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LN="log",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LOG="log10",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE="e ^",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE="10 ^",Blockly.Msg.BLOCKS_OPERATORS_TRUE="真",Blockly.Msg.BLOCKS_OPERATORS_FALSE="偽",Blockly.Msg.BLOCKS_PEN_DOWN_PEN="ペンを下ろす",Blockly.Msg.BLOCKS_PEN_UP_PEN="ペンを上げる",Blockly.Msg.BLOCKS_PEN_SET_PEN_COLOR="ペンの色を%1にする";
@@ -61,7 +61,6 @@ Gem::Specification.new do |spec|
61
61
  ['sass-rails', '~> 4.0.0'],
62
62
  ['uglifier', '>= 1.3.0'],
63
63
  ['coffee-rails', '~> 4.0.0'],
64
- ['turbolinks'],
65
64
  ['jbuilder', '~> 2.0'],
66
65
  ['flatstrap-sass'],
67
66
  ['shared-mime-info'],
@@ -77,7 +77,7 @@ describe SourceCode, 'Rubyのソースコードを表現するモデル' do
77
77
  end
78
78
 
79
79
  describe '#summary', 'プログラムの概要を取得する' do
80
- describe 'XML形式'do
80
+ describe 'XML形式' do
81
81
  let(:xml_path) { rb_path + '.xml' }
82
82
  let(:data) { Rails.root.join(xml_path).read }
83
83
  let(:source_code) {
@@ -128,4 +128,91 @@ describe SourceCode, 'Rubyのソースコードを表現するモデル' do
128
128
  end
129
129
  end
130
130
  end
131
+
132
+ describe '#include_block?' do
133
+ describe 'XML形式' do
134
+ let(:data) { Rails.root.join(xml_path).read }
135
+ let(:source_code) {
136
+ SourceCode.new(filename: File.basename(xml_path), data: data)
137
+ }
138
+
139
+ subject { source_code.include_block?(type) }
140
+
141
+ context 'ソースコードにハードウェア関連ブロックを含む場合' do
142
+ let(:xml_path) { 'demos/adjust_2wd_car.rb.xml' }
143
+
144
+ context '引数にhardware_init_hardwareを指定する' do
145
+ let(:type) { 'hardware_init_hardware' }
146
+
147
+ it { should be_true }
148
+ end
149
+
150
+ context '引数にハードウェア関連ブロックを指定する' do
151
+ let(:type) { /^hardware_/ }
152
+
153
+ it { should be_true }
154
+ end
155
+
156
+ context '引数にpen_down_penを指定する' do
157
+ let(:type) { 'pen_down_pen' }
158
+
159
+ it { should be_false }
160
+ end
161
+
162
+ context '引数にペン関連ブロックを指定する' do
163
+ let(:type) { /^pen_/ }
164
+
165
+ it { should be_false }
166
+ end
167
+ end
168
+
169
+ context 'ソースコードにハードウェア関連ブロックを含まない場合' do
170
+ let(:xml_path) { 'demos/star.rb.xml' }
171
+
172
+ context '引数にhardware_init_hardwareを指定する' do
173
+ let(:type) { 'hardware_init_hardware' }
174
+
175
+ it { should be_false }
176
+ end
177
+
178
+ context '引数にハードウェア関連ブロックを指定する' do
179
+ let(:type) { /^hardware_/ }
180
+
181
+ it { should be_false }
182
+ end
183
+
184
+ context '引数にpen_down_penを指定する' do
185
+ let(:type) { 'pen_down_pen' }
186
+
187
+ it { should be_true }
188
+ end
189
+
190
+ context '引数にペン関連ブロックを指定する' do
191
+ let(:type) { /^pen_/ }
192
+
193
+ it { should be_true }
194
+ end
195
+ end
196
+ end
197
+ end
198
+
199
+ describe '#xml?' do
200
+ let(:source_code) {
201
+ SourceCode.new(filename: File.basename(path))
202
+ }
203
+
204
+ subject { source_code.xml? }
205
+
206
+ context 'a' do
207
+ let(:path) { 'car1.rb' }
208
+
209
+ it { should be_false }
210
+ end
211
+
212
+ context 'b' do
213
+ let(:path) { 'car1.rb.xml' }
214
+
215
+ it { should be_true }
216
+ end
217
+ end
131
218
  end
data/spec/spec_helper.rb CHANGED
@@ -1,154 +1,131 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'rubygems'
3
- require 'spork'
4
- # uncomment the following line to use spork with the debugger
5
- # require 'spork/ext/ruby-debug'
6
-
7
- Spork.prefork do
8
- # Loading more in this block will cause your tests to run faster. However,
9
- # if you change any configuration or code from libraries loaded here, you'll
10
- # need to restart spork for it take effect.
11
-
12
- ENV['RAILS_ENV'] ||= 'test'
13
- require File.expand_path('../../config/environment', __FILE__)
14
- require 'rspec/rails'
15
- require 'rspec/autorun'
16
- require 'capybara/dsl'
17
- require 'capybara/rspec'
18
- require 'capybara/poltergeist'
19
- require 'turnip'
20
- require 'turnip/capybara'
21
- require 'simplecov' if ENV['COVERAGE'] || ENV['COVERALLS']
22
-
23
- # Requires supporting ruby files with custom matchers and macros, etc,
24
- # in spec/support/ and its subdirectories.
25
- Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
26
-
27
- # Checks for pending migrations before tests are run.
28
- # If you are not using ActiveRecord, you can remove this line.
29
- ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
30
-
31
- RSpec.configure do |config|
32
- # ## Mock Framework
33
- #
34
- # If you prefer to use mocha, flexmock or RR, uncomment the
35
- # appropriate line:
36
- #
37
- # config.mock_with :mocha
38
- # config.mock_with :flexmock
39
- # config.mock_with :rr
40
-
41
- # Remove this line if you're not using ActiveRecord or
42
- # ActiveRecord fixtures
43
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
44
-
45
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
46
- # examples within a transaction, remove the following line or assign false
47
- # instead of true.
48
- config.use_transactional_fixtures = false
49
-
50
- # If true, the base class of anonymous controllers will be inferred
51
- # automatically. This will be the default behavior in future versions of
52
- # rspec-rails.
53
- config.infer_base_class_for_anonymous_controllers = false
54
-
55
- # Run specs in random order to surface order dependencies. If you find an
56
- # order dependency and want to debug it, you can fix the order by providing
57
- # the seed, which is printed after each run.
58
- # --seed 1234
59
- config.order = 'random'
60
-
61
- twb = (ENV['TARGET_WEB_BROWZER'] || ENV['TWB']).try(:downcase)
62
- case twb
63
- when 'firefox', 'ie', 'chrome'
64
- Capybara.register_driver :selenium do |app|
65
- opts = { browser: twb.to_sym }
66
-
67
- dir = downloads_dir.to_s
68
- dir.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if windows?
69
- case twb
70
- when 'firefox'
71
- opts[:profile] = profile = Selenium::WebDriver::Firefox::Profile.new
72
- profile['browser.download.folderList'] = 2 # custom location
73
- profile['browser.download.dir'] = dir
74
- profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/plain'
75
- when 'ie'
76
- opts[:introduce_flakiness_by_ignoring_security_domains] = true
77
- when 'chrome'
78
- FileUtils.mkdir_p(dir)
79
- opts[:prefs] = {
80
- download: {
81
- prompt_for_download: false,
82
- default_directory: dir,
83
- directory_upgrade: true,
84
- }
85
- }
86
-
87
- opts[:switches] =
88
- %w(
89
- --ignore-certificate-errors
90
- --disable-popup-blocking
91
- --disable-translate
92
- )
93
- end
94
3
 
95
- Capybara::Selenium::Driver.new(app, opts)
4
+ ENV['RAILS_ENV'] ||= 'test'
5
+ require File.expand_path('../../config/environment', __FILE__)
6
+ require 'rspec/rails'
7
+ require 'rspec/autorun'
8
+ require 'capybara/dsl'
9
+ require 'capybara/rspec'
10
+ require 'capybara/poltergeist'
11
+ require 'turnip'
12
+ require 'turnip/capybara'
13
+ require 'simplecov' if ENV['COVERAGE'] || ENV['COVERALLS']
14
+
15
+ # Requires supporting ruby files with custom matchers and macros, etc,
16
+ # in spec/support/ and its subdirectories.
17
+ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
18
+
19
+ # Checks for pending migrations before tests are run.
20
+ # If you are not using ActiveRecord, you can remove this line.
21
+ ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
22
+
23
+ RSpec.configure do |config|
24
+ # ## Mock Framework
25
+ #
26
+ # If you prefer to use mocha, flexmock or RR, uncomment the
27
+ # appropriate line:
28
+ #
29
+ # config.mock_with :mocha
30
+ # config.mock_with :flexmock
31
+ # config.mock_with :rr
32
+
33
+ # Remove this line if you're not using ActiveRecord or
34
+ # ActiveRecord fixtures
35
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
36
+
37
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
38
+ # examples within a transaction, remove the following line or assign false
39
+ # instead of true.
40
+ config.use_transactional_fixtures = false
41
+
42
+ # If true, the base class of anonymous controllers will be inferred
43
+ # automatically. This will be the default behavior in future versions of
44
+ # rspec-rails.
45
+ config.infer_base_class_for_anonymous_controllers = false
46
+
47
+ # Run specs in random order to surface order dependencies. If you find an
48
+ # order dependency and want to debug it, you can fix the order by providing
49
+ # the seed, which is printed after each run.
50
+ # --seed 1234
51
+ config.order = 'random'
52
+
53
+ twb = (ENV['TARGET_WEB_BROWZER'] || ENV['TWB']).try(:downcase)
54
+ case twb
55
+ when 'firefox', 'ie', 'chrome'
56
+ Capybara.register_driver :selenium do |app|
57
+ opts = { browser: twb.to_sym }
58
+
59
+ dir = downloads_dir.to_s
60
+ dir.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if windows?
61
+ case twb
62
+ when 'firefox'
63
+ opts[:profile] = profile = Selenium::WebDriver::Firefox::Profile.new
64
+ profile['browser.download.folderList'] = 2 # custom location
65
+ profile['browser.download.dir'] = dir
66
+ profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/plain'
67
+ when 'ie'
68
+ opts[:introduce_flakiness_by_ignoring_security_domains] = true
69
+ when 'chrome'
70
+ FileUtils.mkdir_p(dir)
71
+ opts[:prefs] = {
72
+ download: {
73
+ prompt_for_download: false,
74
+ default_directory: dir,
75
+ directory_upgrade: true,
76
+ }
77
+ }
78
+
79
+ opts[:switches] =
80
+ %w(
81
+ --ignore-certificate-errors
82
+ --disable-popup-blocking
83
+ --disable-translate
84
+ )
96
85
  end
97
- Capybara.javascript_driver = :selenium
98
- else
99
- Capybara.javascript_driver = :poltergeist
100
- Capybara.register_driver(:poltergeist) { |app|
101
- Capybara::Poltergeist::Driver.new(app, timeout: 120)
102
- }
103
- end
104
86
 
105
- config.include JsonSpec::Helpers
106
- config.include ERB::Util, type: :helper
107
- config.include ERB::Util, type: :feature
108
- config.include ActionView::Helpers::JavaScriptHelper, type: :feature
109
-
110
- config.after(javascript: true) do
111
- page.execute_script('window.onbeforeunload = null')
112
- FileUtils.rm_rf(downloads_dir) if selenium?
87
+ Capybara::Selenium::Driver.new(app, opts)
113
88
  end
89
+ Capybara.javascript_driver = :selenium
90
+ else
91
+ Capybara.javascript_driver = :poltergeist
92
+ Capybara.register_driver(:poltergeist) { |app|
93
+ Capybara::Poltergeist::Driver.new(app, timeout: 120)
94
+ }
95
+ end
114
96
 
115
- config.before(javascript: true, standalone: true) do
116
- page.driver.restart
97
+ config.include JsonSpec::Helpers
98
+ config.include ERB::Util, type: :helper
99
+ config.include ERB::Util, type: :feature
100
+ config.include ActionView::Helpers::JavaScriptHelper, type: :feature
117
101
 
118
- @_rails_env = Rails.env
119
- Rails.env = ENV['RAILS_ENV'] = 'standalone'
120
- @_home = ENV['HOME']
121
- @_tmpdir = ENV['HOME'] = Dir.mktmpdir('smalruby-')
122
- end
102
+ config.after(javascript: true) do
103
+ page.execute_script('window.onbeforeunload = null')
104
+ FileUtils.rm_rf(downloads_dir) if selenium?
105
+ end
123
106
 
124
- config.after(javascript: true, standalone: true) do
125
- FileUtils.remove_entry_secure(@_tmpdir)
126
- ENV['HOME'] = @_home
127
- Rails.env = ENV['RAILS_ENV'] = @_rails_env
107
+ config.before(javascript: true, standalone: true) do
108
+ page.driver.restart
128
109
 
129
- page.driver.restart
130
- end
110
+ @_rails_env = Rails.env
111
+ Rails.env = ENV['RAILS_ENV'] = 'standalone'
112
+ @_home = ENV['HOME']
113
+ @_tmpdir = ENV['HOME'] = Dir.mktmpdir('smalruby-')
114
+ end
131
115
 
132
- config.before :suite do
133
- DatabaseRewinder.clean_all
134
- end
116
+ config.after(javascript: true, standalone: true) do
117
+ FileUtils.remove_entry_secure(@_tmpdir)
118
+ ENV['HOME'] = @_home
119
+ Rails.env = ENV['RAILS_ENV'] = @_rails_env
135
120
 
136
- config.after :each do
137
- DatabaseRewinder.clean
138
- end
121
+ page.driver.restart
139
122
  end
140
- end
141
-
142
- Spork.each_run do
143
- # This code will be run each time you run your specs.
144
123
 
145
- # http://penguinlab.jp/blog/post/2256# より
146
- if Spork.using_spork?
147
- # app 下のファイル / locale / routes をリロード
148
- # railties-3.2.3/lib/rails/application/finisher.rb あたりを参考に
149
- Rails.application.reloaders.each { |reloader| reloader.execute_if_updated }
124
+ config.before :suite do
125
+ DatabaseRewinder.clean_all
126
+ end
150
127
 
151
- # machinist gem を利用してる場合、blueprints を再度読み直す
152
- # load "#{File.dirname(__FILE__)}/support/blueprints.rb"
128
+ config.after :each do
129
+ DatabaseRewinder.clean
153
130
  end
154
131
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smalruby-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouji Takao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 4.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: turbolinks
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: jbuilder
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -266,6 +252,7 @@ files:
266
252
  - ".ruby-version"
267
253
  - ".simplecov"
268
254
  - ".travis.yml"
255
+ - Guardfile
269
256
  - LEGAL
270
257
  - LICENSE
271
258
  - Procfile
@@ -417,7 +404,10 @@ files:
417
404
  - bin/bundle
418
405
  - bin/rails
419
406
  - bin/rake
407
+ - bin/rspec
420
408
  - bin/smalruby-editor
409
+ - bin/spring
410
+ - bin/teaspoon
421
411
  - config.ru
422
412
  - config/application.rb
423
413
  - config/boot.rb
@@ -464,10 +454,10 @@ files:
464
454
  - public/422.html
465
455
  - public/500.html
466
456
  - public/apple-touch-icon.png
467
- - public/assets/application-92fb2e7b8dd198fbfae7f8451c891ba2.css
468
- - public/assets/application-92fb2e7b8dd198fbfae7f8451c891ba2.css.gz
469
- - public/assets/application-e3cd434424f565fcebf7d7d13353536f.js
470
- - public/assets/application-e3cd434424f565fcebf7d7d13353536f.js.gz
457
+ - public/assets/application-d5358d75a2c4e570c749b333c59b55ab.css
458
+ - public/assets/application-d5358d75a2c4e570c749b333c59b55ab.css.gz
459
+ - public/assets/application-fda71a642d958ffbaf90185c471d6e51.js
460
+ - public/assets/application-fda71a642d958ffbaf90185c471d6e51.js.gz
471
461
  - public/assets/blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js
472
462
  - public/assets/blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js.gz
473
463
  - public/assets/blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js
@@ -488,11 +478,11 @@ files:
488
478
  - public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
489
479
  - public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
490
480
  - public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
491
- - public/assets/manifest-6094ee90554fe1d9bb1a229d8daa16d7.json
481
+ - public/assets/manifest-1a9856df207640ec658271db34b30dbb.json
492
482
  - public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js
493
483
  - public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz
494
- - public/assets/msg/ja-8f29832e96564fb7a0c2280c4d4390b8.js
495
- - public/assets/msg/ja-8f29832e96564fb7a0c2280c4d4390b8.js.gz
484
+ - public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js
485
+ - public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz
496
486
  - public/assets/progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif
497
487
  - public/blockly/media/1x1.gif
498
488
  - public/blockly/media/click.mp3