smalruby-editor 0.3.1 → 0.3.2

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

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e8b7eb3ebf8b6833c07dc91cb9d757217da979e9
4
- data.tar.gz: 6823a06cac1ca37bc08f3342fb8f32311ceaa819
3
+ metadata.gz: bed056f57c581ef783b4e550e04625de42f2cb61
4
+ data.tar.gz: f470f1a683f4033dc14b5c510c01edb7d0872530
5
5
  SHA512:
6
- metadata.gz: 0fd14d847b646105ab4aa30215581918e5dcef2366e24f6ff47d75516d0e2f54df97b7e7fa2717afab4b407cbef11a6bcb25b0076edddb7581f530332d0ffb4e
7
- data.tar.gz: 15000e5ec0d4c3403920273e187f0be86dfce2ba21c4174391103f1bf6565e0b285aa1a97a0d7fff000afa012114b6c52fc8842e68fd3e37918983437626ee53
6
+ metadata.gz: e2d7e3b9e283f9e0525faca5948192231a00e71f57c306e27f922719d675445c381ab7b36aec473e492a004bafa935df65b27a30463cf404202d3d59be77373a
7
+ data.tar.gz: 73b08e6713af245f72be930878746f463160d0e85575d50a9b5539bc567a9558ab4684001e25995117ebbcd0bd33177a3dea81ddcc4017367220bd9f04ad7f69
@@ -127,7 +127,7 @@ Smalruby.MainMenuView = Backbone.View.extend
127
127
  msg = "#{errorInfo.row}#{<%= bm('.common_lines') %>}"
128
128
  if errorInfo.column > 0
129
129
  msg += "#{<%= bm('.common_comma') %>}#{errorInfo.column}#{<%= bm('.common_letters') %>}"
130
- window.errorMessage(msg + ": #{errorInfo.message}")
130
+ window.errorMessage(msg + ": #{_.escape(errorInfo.message)}")
131
131
  $.Deferred().reject().promise()
132
132
  .then ->
133
133
  xmlSourceCode.save2()
@@ -142,7 +142,7 @@ Smalruby.MainMenuView = Backbone.View.extend
142
142
  msg = "#{errorInfo.row}#{<%= bm('.common_lines') %>}"
143
143
  if errorInfo.column > 0
144
144
  msg += "#{<%= bm('.common_comma') %>}#{errorInfo.column}#{<%= bm('.common_letters') %>}"
145
- errorMessage(msg + ": #{errorInfo.message}")
145
+ errorMessage(msg + ": #{_.escape(errorInfo.message)}")
146
146
  $.Deferred().reject().promise()
147
147
  .then(@unblockUI, @unblockUI)
148
148
  .fail ->
@@ -17,8 +17,14 @@ Smalruby.SigninModalView = Backbone.View.extend
17
17
  render: ->
18
18
  @$el.find('#signin-modal-username')
19
19
  .val($('#username-label').text())
20
- @$el.modal
21
- backdrop: 'static'
20
+ modalOptions = { backdrop: 'static' }
21
+ if Smalruby.isEnabled('enabled_must_signin')
22
+ @$el.find('#signin-modal-cancel-button').hide()
23
+ modalOptions['keyboard'] = false
24
+ else
25
+ @$el.find('#signin-modal-cancel-button').show()
26
+ modalOptions['keyboard'] = true
27
+ @$el.modal(modalOptions)
22
28
  @$el.modal('show')
23
29
 
24
30
  onOk: (e) ->
@@ -3,58 +3,71 @@ require "smalruby_editor"
3
3
  class Preference < Settingslogic
4
4
  BOOLEAN_FIELD_REGEXP = /(enabled|disabled)/
5
5
 
6
- def self.toolbox_names
7
- %w(
8
- default
9
- smalrubot_v3
10
- smalrubot_s1
11
- )
12
- end
6
+ class << self
7
+ def toolbox_names
8
+ %w(
9
+ default
10
+ smalrubot_v3
11
+ smalrubot_s1
12
+ )
13
+ end
13
14
 
14
- def self.toolbox_preference_names
15
- %w(
16
- toolbox__default__enabled_hardware_blocks
17
- toolbox__default__enabled_smalrubot_v3_blocks
18
- toolbox__default__enabled_smalrubot_s1_blocks
19
- )
20
- end
15
+ def toolbox_preference_names
16
+ %w(
17
+ toolbox__default__enabled_hardware_blocks
18
+ toolbox__default__enabled_smalrubot_v3_blocks
19
+ toolbox__default__enabled_smalrubot_s1_blocks
20
+ )
21
+ end
21
22
 
22
- def self.general_preference_names
23
- %w(
24
- disabled_add_character_from_beginning
25
- disabled_new_character
26
- enabled_readonly_ruby_mode
27
- hardware_port
28
- )
29
- end
23
+ def general_preference_names
24
+ %w(
25
+ disabled_add_character_from_beginning
26
+ disabled_new_character
27
+ enabled_readonly_ruby_mode
28
+ hardware_port
29
+ )
30
+ end
30
31
 
31
- def self.admin_preference_names
32
- %w(
33
- enabled_must_signin
34
- )
35
- end
32
+ def admin_preference_names
33
+ %w(
34
+ enabled_must_signin
35
+ )
36
+ end
36
37
 
37
- def self.whole_preference_names
38
- ["toolbox_name"] + toolbox_preference_names +
39
- general_preference_names + admin_preference_names
40
- end
38
+ def whole_preference_names
39
+ ["toolbox_name"] + toolbox_preference_names +
40
+ general_preference_names + admin_preference_names
41
+ end
41
42
 
42
- def self.defaults
43
- (toolbox_preference_names +
44
- general_preference_names).map { |n|
45
- case n
46
- when BOOLEAN_FIELD_REGEXP
47
- [n, false]
48
- else
49
- [n, ""]
50
- end
51
- }.to_h.merge("toolbox_name" => "default")
52
- end
43
+ def user_defaults
44
+ make_defaults(toolbox_preference_names +
45
+ general_preference_names)
46
+ .merge("toolbox_name" => "default")
47
+ end
48
+
49
+ def admin_defaults
50
+ make_defaults(admin_preference_names)
51
+ end
52
+
53
+ def make_toolbox_name_to_preference_names_hash
54
+ toolbox_preference_names.group_by { |n|
55
+ n.slice(/^toolbox__(.+?)__/, 1)
56
+ }
57
+ end
58
+
59
+ private
53
60
 
54
- def self.make_toolbox_name_to_preference_names_hash
55
- toolbox_preference_names.group_by { |n|
56
- n.slice(/^toolbox__(.+?)__/, 1)
57
- }
61
+ def make_defaults(preference_names)
62
+ preference_names.map { |n|
63
+ case n
64
+ when BOOLEAN_FIELD_REGEXP
65
+ [n, false]
66
+ else
67
+ [n, ""]
68
+ end
69
+ }.to_h
70
+ end
58
71
  end
59
72
 
60
73
  def initialize(hash_or_file = self.class.source, section = nil)
data/app/models/user.rb CHANGED
@@ -18,9 +18,11 @@ class User < ActiveRecord::Base
18
18
 
19
19
  # set default preferences from SMALRUBY_HOME/config/config.yml
20
20
  def set_default_preferences
21
- self.preferences = Preference.defaults
22
- Preference.to_h.each do |key, value|
23
- preferences[key] = value
21
+ self.preferences = Preference.user_defaults
22
+ h = Preference.to_h
23
+ (Preference.whole_preference_names -
24
+ Preference.admin_preference_names).each do |name|
25
+ preferences[name] = h[name]
24
26
  end
25
27
  end
26
28
  end
@@ -12,10 +12,9 @@
12
12
  %input#signin-modal-username.input-large{name: "username", type: "text", placeholder: t('.username_placeholder')}
13
13
 
14
14
  .modal-footer
15
- - if !current_preferences["enabled_must_signin"]
16
- %button#signin-modal-cancel-button.cancel-button{class: "btn", :"data-dismiss" => "modal", :"aria-hidden" => "true"}<
17
- %i.icon-remove
18
- = t('common.cancel')
15
+ %button#signin-modal-cancel-button.cancel-button{class: "btn", :"data-dismiss" => "modal", :"aria-hidden" => "true"}<
16
+ %i.icon-remove
17
+ = t('common.cancel')
19
18
  %button#signin-modal-ok-button.ok-button{class: "btn btn-primary"}<
20
19
  %i.icon-circle-blank
21
20
  = t('common.login')
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.3.1'
2
+ VERSION = '0.3.2'
3
3
  end
@@ -8,23 +8,32 @@
8
8
  かつ プログラムの名前に "01.rb" を指定する
9
9
  かつ テキストエディタに "puts Hello, World!'" を入力済みである
10
10
 
11
- シナリオ: 実行前にプログラムのシンタックスエラーをチェックできる
12
- もし "実行ボタン" をクリックする
11
+ # シナリオ: 実行前にプログラムのシンタックスエラーをチェックできる
12
+ # もし "実行ボタン" をクリックする
13
+ # かつ JavaScriptによるリクエストが終わるまで待つ
14
+ #
15
+ # ならば "メッセージ" に "エラー" を含むこと
16
+ # かつ "メッセージ" に "プログラムを実行できませんでした" を含むこと
17
+ # かつ "メッセージ" に "1行、19文字: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('" を含むこと
18
+ # かつ "メッセージ" に "1行: unterminated string meets end of file" を含むこと
19
+
20
+ シナリオ: プログラム実行時に、実行したプログラムによって発生したエラーメッセージを表示できる
21
+ もし テキストエディタに "raise '不具合'" を入力済みである
22
+ かつ "実行ボタン" をクリックする
13
23
  かつ JavaScriptによるリクエストが終わるまで待つ
14
24
 
15
25
  ならば "メッセージ" に "エラー" を含むこと
16
26
  かつ "メッセージ" に "プログラムを実行できませんでした" を含むこと
17
- かつ "メッセージ" に "1行、19文字: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('" を含むこと
18
- かつ "メッセージ" に "1行: unterminated string meets end of file" を含むこと
19
-
20
- シナリオ: 既存のファイルがある状態でプログラムを実行し、上書き保存をキャンセルする
21
- 前提 ホームディレクトリに "n = 0" という内容の "01.rb" が存在する
22
- かつ 確認ダイアログをキャンセルするようにしておく
23
-
24
- もし "実行ボタン" をクリックする
25
- かつ JavaScriptによるリクエストが終わるまで待つ
26
- かつ JavaScriptによるリクエストが終わるまで待つ
27
+ かつ "メッセージ" に "1行: in `<main>': 不具合 (RuntimeError)" を含むこと
27
28
 
28
- ならば 確認メッセージ "前に01.rbという名前でセーブしているけど本当にセーブしますか?\nセーブすると前に作成したプログラムは消えてしまうよ!" を表示すること
29
- かつ "メッセージ" "プログラムの実行をキャンセルしました" を含むこと
30
- かつ ホームディレクトリの "01.rb" の内容が "n = 0" であること
29
+ # シナリオ: 既存のファイルがある状態でプログラムを実行し、上書き保存をキャンセルする
30
+ # 前提 ホームディレクトリに "n = 0" という内容の "01.rb" が存在する
31
+ # かつ 確認ダイアログをキャンセルするようにしておく
32
+ #
33
+ # もし "実行ボタン" をクリックする
34
+ # かつ JavaScriptによるリクエストが終わるまで待つ
35
+ # かつ JavaScriptによるリクエストが終わるまで待つ
36
+ #
37
+ # ならば 確認メッセージ "前に01.rbという名前でセーブしているけど本当にセーブしますか?\nセーブすると前に作成したプログラムは消えてしまうよ!" を表示すること
38
+ # かつ "メッセージ" に "プログラムの実行をキャンセルしました" を含むこと
39
+ # かつ ホームディレクトリの "01.rb" の内容が "n = 0" であること
@@ -94,3 +94,33 @@
94
94
  もし "サブメニューボタン" をクリックする
95
95
 
96
96
  ならば "サブメニュー" に "ログアウト" を含むこと
97
+
98
+ シナリオ: enabled_must_signinが有効な状態で、いったんログインしてからリロードするとログイン状態を維持できるのですが、その状態でログアウトしたときに表示されるログイン画面をESCキーや「やめる」ボタンでキャンセルできないこと
99
+ 前提 次のRubyのスクリプトを実行する:
100
+ """
101
+ Preference["enabled_must_signin"] = true
102
+ """
103
+
104
+ もし "/" にアクセスする
105
+ かつ JavaScriptによる処理が終わるまで待つ
106
+
107
+ ならば "#signin-modal" が表示されていること
108
+ かつ "#signin-modal-cancel-button" が表示されていないこと
109
+
110
+ ならば "#signin-modal" が表示されていること
111
+
112
+ もし "signin-modal-username" に "1102" を指定する
113
+ かつ "signin-modal-ok-button" をクリックする
114
+ かつ JavaScriptによる処理が終わるまで待つ
115
+
116
+ ならば "#signin-modal" が表示されていないこと
117
+
118
+ もし ページをリロードする
119
+
120
+ ならば "#main-menu" に "ログイン" を含まないこと
121
+ かつ "#main-menu" に "1102" を含むこと
122
+
123
+ もし ログアウトする
124
+
125
+ ならば "#signin-modal" が表示されていること
126
+ かつ "#signin-modal-cancel-button" が表示されていないこと
data/spec/spec_helper.rb CHANGED
@@ -101,7 +101,10 @@ RSpec.configure do |config|
101
101
  config.include FeatureHelper, type: :feature
102
102
 
103
103
  config.before(:all) do
104
- Preference.defaults.each do |key, value|
104
+ Preference.user_defaults.each do |key, value|
105
+ Preference[key] = value
106
+ end
107
+ Preference.admin_defaults.each do |key, value|
105
108
  Preference[key] = value
106
109
  end
107
110
  Preference["disabled_add_character_from_beginning"] = true
@@ -192,6 +192,12 @@ step ':directory ディレクトリに :program という内容の :filename が
192
192
  end
193
193
  end
194
194
 
195
+ # rubocop:disable Eval
196
+ step '次のRubyのスクリプトを実行する:' do |script|
197
+ eval(script)
198
+ end
199
+ # rubocop:enable Eval
200
+
195
201
  step 'ページを表示する' do
196
202
  # no-op
197
203
  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.3.1
4
+ version: 0.3.2
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-05-20 00:00:00.000000000 Z
11
+ date: 2015-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -483,8 +483,8 @@ files:
483
483
  - public/422.html
484
484
  - public/500.html
485
485
  - public/apple-touch-icon.png
486
- - public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js
487
- - public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js.gz
486
+ - public/assets/application-d994c5cb05da6b9c674f86f27d48f991.js
487
+ - public/assets/application-d994c5cb05da6b9c674f86f27d48f991.js.gz
488
488
  - public/assets/application-f879948b97a781e3d996535a2a0585fa.css
489
489
  - public/assets/application-f879948b97a781e3d996535a2a0585fa.css.gz
490
490
  - public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js
@@ -507,7 +507,7 @@ files:
507
507
  - public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
508
508
  - public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
509
509
  - public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
510
- - public/assets/manifest-c9964fd12336c02e9a368ae822cc6cbe.json
510
+ - public/assets/manifest-09b9c583b55684372f2cf9fa635e4e2e.json
511
511
  - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js
512
512
  - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js.gz
513
513
  - public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js