smalruby-editor 0.1.14-x86-mingw32 → 0.1.15-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/app/assets/javascripts/blocks/pen.js.coffee.erb +45 -0
- data/app/assets/javascripts/models/source_code.js.coffee +1 -1
- data/app/assets/javascripts/views/load_modal_view.js.coffee +16 -0
- data/app/assets/stylesheets/toolbox.css.scss.erb +1 -0
- data/app/controllers/source_codes_controller.rb +11 -5
- data/app/models/source_code.rb +20 -0
- data/app/views/editor/_load_modal.html.haml +4 -0
- data/app/views/editor/_toolbox.html.haml +11 -0
- data/lib/smalruby_editor/version.rb +1 -1
- data/smalruby-editor.gemspec +1 -1
- 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/models/source_code_spec.rb +23 -0
- metadata +14 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d53fa32a3b8707706add17ac92e087881b7d4f2
|
4
|
+
data.tar.gz: 842742995256fbc29130fbdd9de50b906ed1fd49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bab4b91459b18253fca144251ddcbb68a445f2f6cb12702b645a1e5ff894c2411b301bea079d4557875c2b9174e4973044dc8f1a0008b9c4c45da1adf34d4c1
|
7
|
+
data.tar.gz: 32d4a35fb1a7a727b91f8ef59f860589ffa59e2b1810a2338eda4c01a06de5b2a70c4745ab36c58c636dcefdf56643ea285b5196ff87ed356a42e4e121a60ec1
|
@@ -4,3 +4,48 @@
|
|
4
4
|
category = 'pen'
|
5
5
|
color = 160
|
6
6
|
%>
|
7
|
+
|
8
|
+
# ペンを下ろす
|
9
|
+
# ペンを上げる
|
10
|
+
# <%
|
11
|
+
[
|
12
|
+
['down_pen', 'ペンを下ろす'],
|
13
|
+
['up_pen', 'ペンを上げる'],
|
14
|
+
].each do |suffix, label|
|
15
|
+
n = "#{category}_#{suffix}"
|
16
|
+
%>
|
17
|
+
|
18
|
+
Blockly.Blocks['<%= n %>'] =
|
19
|
+
init: ()->
|
20
|
+
@setHelpUrl('')
|
21
|
+
@setColour(<%= color %>)
|
22
|
+
@appendDummyInput()
|
23
|
+
.appendField('<%= label %>')
|
24
|
+
@setPreviousStatement(true)
|
25
|
+
@setNextStatement(true)
|
26
|
+
@setTooltip('')
|
27
|
+
|
28
|
+
Blockly.Ruby['<%= n %>'] = (block) ->
|
29
|
+
Blockly.Ruby.characterMethodCall_('<%= suffix %>')
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
# ペンの色を[カラー]にする
|
33
|
+
<% n = "#{category}_set_pen_color" %>
|
34
|
+
Blockly.Blocks['<%= n %>'] =
|
35
|
+
init: ()->
|
36
|
+
@setHelpUrl('')
|
37
|
+
@setColour(<%= color %>)
|
38
|
+
@appendDummyInput()
|
39
|
+
.appendField('ペンの色を')
|
40
|
+
.appendField(new Blockly.FieldColour('#ff0000'), 'COLOUR')
|
41
|
+
.appendField('にする')
|
42
|
+
@setPreviousStatement(true)
|
43
|
+
@setNextStatement(true)
|
44
|
+
@setTooltip('')
|
45
|
+
|
46
|
+
Blockly.Ruby['<%= n %>'] = (block) ->
|
47
|
+
c = @getFieldValue('COLOUR')
|
48
|
+
red = parseInt(c[1..2], 16)
|
49
|
+
green = parseInt(c[3..4], 16)
|
50
|
+
blue = parseInt(c[5..6], 16)
|
51
|
+
Blockly.Ruby.characterSetVariable_('pen_color', "[#{red}, #{green}, #{blue}]")
|
@@ -21,7 +21,7 @@ Smalruby.SourceCode = Backbone.Model.extend
|
|
21
21
|
if window.blockMode
|
22
22
|
data = Blockly.Ruby.workspaceToCode()
|
23
23
|
else
|
24
|
-
data =window.textEditor.getSession().getDocument().getValue()
|
24
|
+
data = window.textEditor.getSession().getDocument().getValue()
|
25
25
|
|
26
26
|
@set('data', data)
|
27
27
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Smalruby.LoadModalView = Backbone.View.extend
|
3
3
|
events:
|
4
4
|
'click #load-modal-ok-button': 'onOk'
|
5
|
+
'click #load-modal-remix-button': 'onRemix'
|
5
6
|
|
6
7
|
initialize: ->
|
7
8
|
@$el.find('#load-modal-find-from-computer').click (e) =>
|
@@ -11,6 +12,7 @@ Smalruby.LoadModalView = Backbone.View.extend
|
|
11
12
|
render: ->
|
12
13
|
@type = null
|
13
14
|
@program = null
|
15
|
+
@setRemix(false)
|
14
16
|
@unselect()
|
15
17
|
|
16
18
|
elLocalPrograms = @$el.find('#load-modal-local-programs')
|
@@ -60,6 +62,7 @@ Smalruby.LoadModalView = Backbone.View.extend
|
|
60
62
|
data:
|
61
63
|
source_code:
|
62
64
|
filename: @program.filename
|
65
|
+
remix: @remix
|
63
66
|
dataType: 'json'
|
64
67
|
success: (data, textStatus, jqXHR) ->
|
65
68
|
Smalruby.Views.MainMenuView.load(data.source_code)
|
@@ -71,6 +74,7 @@ Smalruby.LoadModalView = Backbone.View.extend
|
|
71
74
|
data:
|
72
75
|
source_code:
|
73
76
|
filename: @program.filename
|
77
|
+
remix: @remix
|
74
78
|
dataType: 'json'
|
75
79
|
success: (data, textStatus, jqXHR) ->
|
76
80
|
Smalruby.Views.MainMenuView.load(data.source_code)
|
@@ -80,6 +84,18 @@ Smalruby.LoadModalView = Backbone.View.extend
|
|
80
84
|
|
81
85
|
@$el.modal('hide')
|
82
86
|
|
87
|
+
onRemix: ->
|
88
|
+
@setRemix(!@remix)
|
89
|
+
|
90
|
+
setRemix: (remix) ->
|
91
|
+
@remix = remix
|
92
|
+
e = $('#load-modal-remix-button')
|
93
|
+
buttonClass = 'btn-success'
|
94
|
+
if @remix
|
95
|
+
e.addClass(buttonClass)
|
96
|
+
else
|
97
|
+
e.removeClass(buttonClass)
|
98
|
+
|
83
99
|
onLocalProgramClick: (e, program) ->
|
84
100
|
@select(e.currentTarget, 'local', program)
|
85
101
|
|
@@ -88,7 +88,7 @@ class SourceCodesController < ApplicationController
|
|
88
88
|
program_path = local_program_paths.find { |path|
|
89
89
|
rb_basename(path) == filename
|
90
90
|
}
|
91
|
-
load_local_file(program_path)
|
91
|
+
load_local_file(program_path, source_code_params[:remix])
|
92
92
|
end
|
93
93
|
|
94
94
|
def load_demo
|
@@ -96,7 +96,7 @@ class SourceCodesController < ApplicationController
|
|
96
96
|
program_path = demo_program_paths.find { |path|
|
97
97
|
rb_basename(path) == filename
|
98
98
|
}
|
99
|
-
load_local_file(program_path)
|
99
|
+
load_local_file(program_path, source_code_params[:remix])
|
100
100
|
end
|
101
101
|
|
102
102
|
def run
|
@@ -124,7 +124,7 @@ class SourceCodesController < ApplicationController
|
|
124
124
|
private
|
125
125
|
|
126
126
|
def source_code_params
|
127
|
-
params.require(:source_code).permit(:data, :filename)
|
127
|
+
params.require(:source_code).permit(:data, :filename, :remix)
|
128
128
|
end
|
129
129
|
|
130
130
|
def get_file_info(file)
|
@@ -194,10 +194,16 @@ class SourceCodesController < ApplicationController
|
|
194
194
|
path
|
195
195
|
end
|
196
196
|
|
197
|
-
def load_local_file(path)
|
197
|
+
def load_local_file(path, remix)
|
198
198
|
if path
|
199
|
+
if remix == 'true'
|
200
|
+
filename = SourceCode.make_remix_filename("~/#{session[:username]}",
|
201
|
+
path.basename.to_s)
|
202
|
+
else
|
203
|
+
filename = path.basename.to_s
|
204
|
+
end
|
199
205
|
info = {
|
200
|
-
filename:
|
206
|
+
filename: filename,
|
201
207
|
type: MIME.check(path.to_s).try(:content_type) || 'text/plain',
|
202
208
|
data: NKF.nkf('-w', path.read),
|
203
209
|
size: path.size,
|
data/app/models/source_code.rb
CHANGED
@@ -16,6 +16,26 @@ class SourceCode < ActiveRecord::Base
|
|
16
16
|
validate :validate_filename
|
17
17
|
validates :data, presence: true, allow_blank: true
|
18
18
|
|
19
|
+
MAX_REMIX_COUNT = 1000
|
20
|
+
|
21
|
+
# リミックス用のファイル名を生成する
|
22
|
+
def self.make_remix_filename(home_dir, filename)
|
23
|
+
home_dir = Pathname(home_dir).expand_path
|
24
|
+
filename = filename.dup
|
25
|
+
ext = filename.slice!(/\.rb(\.xml)?$/)
|
26
|
+
filename.slice!(/(_remix(\d+)?)+$/)
|
27
|
+
basename = "#{filename}_remix"
|
28
|
+
MAX_REMIX_COUNT.times do |i|
|
29
|
+
suffix = (i == 0 ? '' : sprintf('%02d', i + 1))
|
30
|
+
remix_name = "#{basename}#{suffix}"
|
31
|
+
if !home_dir.join("#{remix_name}.rb").exist? &&
|
32
|
+
!home_dir.join("#{remix_name}.rb.xml").exist?
|
33
|
+
return "#{remix_name}#{ext}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
fail "reach max remix count...: #{filename}"
|
37
|
+
end
|
38
|
+
|
19
39
|
# シンタックスをチェックする
|
20
40
|
def check_syntax
|
21
41
|
_, stderr_str, status = *open3_capture3_ruby_c
|
@@ -134,6 +134,17 @@
|
|
134
134
|
-# 変数:ボリューム
|
135
135
|
-#%block{:type => "#{category}_volume"}
|
136
136
|
|
137
|
+
- category = 'pen'
|
138
|
+
%category{:name => 'ペン'}
|
139
|
+
-# ペンを下ろす
|
140
|
+
%block{:type => "#{category}_down_pen"}
|
141
|
+
|
142
|
+
-# ペンを上げる
|
143
|
+
%block{:type => "#{category}_up_pen"}
|
144
|
+
|
145
|
+
-# ペンの色を[カラー]にする
|
146
|
+
%block{:type => "#{category}_set_pen_color"}
|
147
|
+
|
137
148
|
- category = 'events'
|
138
149
|
%category{:name => '~のとき'}
|
139
150
|
-# まずは
|
data/smalruby-editor.gemspec
CHANGED
@@ -68,7 +68,7 @@ Gem::Specification.new do |spec|
|
|
68
68
|
['launchy'],
|
69
69
|
['mime-types', '~> 1.16'],
|
70
70
|
['haml-rails'],
|
71
|
-
['smalruby', '~> 0.0.
|
71
|
+
['smalruby', '~> 0.0.23'],
|
72
72
|
]
|
73
73
|
runtime_dependencies << ['therubyracer'] unless is_windows
|
74
74
|
runtime_dependencies.each do |args|
|
File without changes
|
File without changes
|
File without changes
|
@@ -13,6 +13,29 @@ describe SourceCode, 'Rubyのソースコードを表現するモデル' do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
describe '.make_remix_filename', 'リミックス用のファイル名を生成する' do
|
17
|
+
subject {
|
18
|
+
home_dir = Rails.root.join('spec/fixtures/files')
|
19
|
+
SourceCode.make_remix_filename(home_dir.to_s, filename)
|
20
|
+
}
|
21
|
+
|
22
|
+
{
|
23
|
+
'01.rb' => '01_remix03.rb',
|
24
|
+
'01.rb.xml' => '01_remix03.rb.xml',
|
25
|
+
'01_remix.rb' => '01_remix03.rb',
|
26
|
+
'01_remix02.rb' => '01_remix03.rb',
|
27
|
+
'01_remix03.rb' => '01_remix03.rb',
|
28
|
+
'02.rb' => '02_remix.rb',
|
29
|
+
'02.rb.xml' => '02_remix.rb.xml',
|
30
|
+
}.each do |_filename, _expected|
|
31
|
+
describe _filename do
|
32
|
+
let(:filename) { _filename }
|
33
|
+
|
34
|
+
it { should eq(_expected) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
16
39
|
describe '#check_syntax', 'シンタックスをチェックする' do
|
17
40
|
let(:source_code) {
|
18
41
|
SourceCode.new(data: data)
|
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.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Kouji Takao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - ~>
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.0.
|
187
|
+
version: 0.0.23
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - ~>
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.0.
|
194
|
+
version: 0.0.23
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: bundler
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -540,6 +540,9 @@ files:
|
|
540
540
|
- spec/controllers/source_codes_controller_spec.rb
|
541
541
|
- spec/fixtures/files/01.rb
|
542
542
|
- spec/fixtures/files/01.rb.xml
|
543
|
+
- spec/fixtures/files/01_remix.rb
|
544
|
+
- spec/fixtures/files/01_remix02.rb
|
545
|
+
- spec/fixtures/files/01_remix10.rb.xml
|
543
546
|
- spec/fixtures/files/favicon.ico
|
544
547
|
- spec/helpers/editor_helper_spec.rb
|
545
548
|
- spec/helpers/sessions_helper_spec.rb
|
@@ -584,10 +587,10 @@ files:
|
|
584
587
|
- vendor/assets/javascripts/blockly/msg/js/ja.js
|
585
588
|
- vendor/assets/javascripts/jquery.blockUI.js
|
586
589
|
- vendor/assets/stylesheets/.keep
|
587
|
-
- public/assets/application-
|
588
|
-
- public/assets/application-
|
589
|
-
- public/assets/application-
|
590
|
-
- public/assets/application-
|
590
|
+
- public/assets/application-51ab300acd1779bfba20b099e7000b7e.css
|
591
|
+
- public/assets/application-51ab300acd1779bfba20b099e7000b7e.css.gz
|
592
|
+
- public/assets/application-dc485e2270d6c5fce20c149d1e2c4f8d.js
|
593
|
+
- public/assets/application-dc485e2270d6c5fce20c149d1e2c4f8d.js.gz
|
591
594
|
- public/assets/favicon-a37c90b368fd8ed436cb8f9e9396465c.ico
|
592
595
|
- public/assets/jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif
|
593
596
|
- public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png
|
@@ -716,6 +719,9 @@ test_files:
|
|
716
719
|
- spec/controllers/source_codes_controller_spec.rb
|
717
720
|
- spec/fixtures/files/01.rb
|
718
721
|
- spec/fixtures/files/01.rb.xml
|
722
|
+
- spec/fixtures/files/01_remix.rb
|
723
|
+
- spec/fixtures/files/01_remix02.rb
|
724
|
+
- spec/fixtures/files/01_remix10.rb.xml
|
719
725
|
- spec/fixtures/files/favicon.ico
|
720
726
|
- spec/helpers/editor_helper_spec.rb
|
721
727
|
- spec/helpers/sessions_helper_spec.rb
|