wedge 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/wedge.rb +15 -5
- data/lib/wedge/component.rb +11 -5
- data/lib/wedge/html.rb +31 -4
- data/lib/wedge/middleware.rb +20 -17
- data/lib/wedge/plugins/uploader.rb +5 -8
- data/lib/wedge/version.rb +1 -1
- data/playground/app/components/uploader.rb +10 -0
- data/spec/playground/uploader_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/wedge/plugins/uploader_spec.rb +29 -0
- data/wedge.gemspec +0 -1
- metadata +4 -17
- data/test.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac3731821b07863c0126576d57b06874e3bfec63
|
4
|
+
data.tar.gz: b0d87766926902c7b17e26cd5e1ac007efed2a91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13daa53b74eb6a37c688d24c74612519deea48f08a4fe89a87bebb90f538914e5735bdc9d59d6876a68c2eaae06ddd862d5827a491db9a8a153adf096abb98d7
|
7
|
+
data.tar.gz: 0f86a4b29929e42e6efc10907d5fc9b2ae856e7e80be843e1fd629fb2585bc05dfc5236156374141230efc0ae8bbdbd84b4d6615d05b65119681d890265018c6
|
data/lib/wedge.rb
CHANGED
@@ -45,8 +45,12 @@ class Wedge
|
|
45
45
|
"#{config.assets_url}#{config.cache_assets ? "/#{config.assets_key}" : ''}"
|
46
46
|
end
|
47
47
|
|
48
|
-
def html!(&
|
49
|
-
|
48
|
+
def html!(scope = false, &block)
|
49
|
+
if !block_given?
|
50
|
+
DOM.new HTML::DSL.html(&scope).to_html
|
51
|
+
else
|
52
|
+
DOM.new HTML::DSL.scope!(scope).html(&block).to_html
|
53
|
+
end
|
50
54
|
end
|
51
55
|
|
52
56
|
def script_tag
|
@@ -139,7 +143,7 @@ class Wedge
|
|
139
143
|
|
140
144
|
if server?
|
141
145
|
javascript_cache[path_name] ||= begin
|
142
|
-
js = build(path_name, options).javascript
|
146
|
+
js = options.delete(:js) || build(path_name, options).javascript
|
143
147
|
|
144
148
|
if path_name == 'wedge'
|
145
149
|
compiled_data = Base64.encode64 config.client_data.to_json
|
@@ -151,6 +155,7 @@ class Wedge
|
|
151
155
|
js << Wedge.javascript(path)
|
152
156
|
end
|
153
157
|
elsif comp_class = Wedge.config.component_class[path_name.gsub(/\//, '__')]
|
158
|
+
comp_class.config.before_compile.each { |blk| comp_class.instance_eval(&blk) }
|
154
159
|
comp_name = comp_class.config.name
|
155
160
|
compiled_data = Base64.encode64 comp_class.config.client_data.to_json
|
156
161
|
|
@@ -166,10 +171,15 @@ class Wedge
|
|
166
171
|
cache = options[:cache_assets]
|
167
172
|
|
168
173
|
`jQuery.ajax({ url: url, dataType: "script", cache: cache }).done(function() {`
|
174
|
+
# fix: at the moment to_js called from the server will set the class
|
175
|
+
# store for whatever method it calls. we need to think of a better idea
|
176
|
+
# for global and local data store.
|
177
|
+
Wedge.config.component_class[options[:name]].config.store = options[:store].indifferent
|
178
|
+
|
169
179
|
if initialize_args = options.delete(:initialize_args)
|
170
|
-
comp = Wedge
|
180
|
+
comp = Wedge[options[:name], *initialize_args]
|
171
181
|
else
|
172
|
-
comp = Wedge
|
182
|
+
comp = Wedge[options[:name]]
|
173
183
|
end
|
174
184
|
|
175
185
|
if options[:method_args].any?
|
data/lib/wedge/component.rb
CHANGED
@@ -16,8 +16,10 @@ class Wedge
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
obj.
|
19
|
+
unless RUBY_ENGINE == 'opal'
|
20
|
+
obj.config.before_compile.each do |blk|
|
21
|
+
obj.instance_exec &blk
|
22
|
+
end
|
21
23
|
end
|
22
24
|
|
23
25
|
if args.length > 0
|
@@ -208,7 +210,7 @@ class Wedge
|
|
208
210
|
|
209
211
|
def html!(&b)
|
210
212
|
unless RUBY_ENGINE == 'opal'
|
211
|
-
Wedge.html!(&b)
|
213
|
+
Wedge.html!(self, &b)
|
212
214
|
end
|
213
215
|
end
|
214
216
|
|
@@ -308,7 +310,11 @@ class Wedge
|
|
308
310
|
return unless server?
|
309
311
|
|
310
312
|
client_data = config.client_data.dup
|
311
|
-
client_data.merge!
|
313
|
+
client_data.merge!(
|
314
|
+
method_called: method,
|
315
|
+
method_args: args,
|
316
|
+
initialize_args: config.initialize_args
|
317
|
+
)
|
312
318
|
|
313
319
|
compiled_opts = Base64.encode64 client_data.to_json
|
314
320
|
javascript = <<-JS
|
@@ -331,7 +337,7 @@ class Wedge
|
|
331
337
|
end
|
332
338
|
|
333
339
|
def wedge_html(&b)
|
334
|
-
Wedge.html!(&b)
|
340
|
+
Wedge.html!(self, &b)
|
335
341
|
end
|
336
342
|
alias_method :html!, :wedge_html
|
337
343
|
|
data/lib/wedge/html.rb
CHANGED
@@ -28,6 +28,15 @@ class Wedge
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
TAGS = %w{a button abbr acronym address applet area article aside audio b base basefont bdi
|
32
|
+
bdo big blockquote body br canvas caption center cite code col colgroup command
|
33
|
+
datalist dd del details dfn dialog dir div dl dt em embed fieldset figcaption
|
34
|
+
figure font footer form frame frameset h1 head header hgroup hr html i iframe
|
35
|
+
img input ins kbd keygen label legend li link map mark menu meta meter nav noframes
|
36
|
+
noscript object ol optgroup option output p param pre progress q rp rt ruby s samp
|
37
|
+
script section select small source span strike strong style sub summary sup table tbody
|
38
|
+
td textarea tfoot th thead time title tr track tt u ul var video wbr}
|
39
|
+
|
31
40
|
# http://erikonrails.snowedin.net/?p=379
|
32
41
|
class DSL
|
33
42
|
def initialize(tag, *args, &block)
|
@@ -55,13 +64,31 @@ class Wedge
|
|
55
64
|
end
|
56
65
|
|
57
66
|
def method_missing(tag, *args, &block)
|
58
|
-
|
59
|
-
|
60
|
-
|
67
|
+
if !TAGS.include?(tag.to_s) && scope.respond_to?(tag, true)
|
68
|
+
scope.send(tag, *args, &block)
|
69
|
+
else
|
70
|
+
child = DSL.scope!(scope).new(tag.to_s, *args, &block)
|
71
|
+
children << child
|
72
|
+
child
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def scope
|
77
|
+
self.class.scope
|
61
78
|
end
|
62
79
|
|
63
80
|
def self.method_missing(tag, *args, &block)
|
64
|
-
DSL.new(tag.to_s, *args, &block)
|
81
|
+
DSL.scope!(scope).new(tag.to_s, *args, &block)
|
82
|
+
end
|
83
|
+
|
84
|
+
class << self
|
85
|
+
attr_accessor :scope
|
86
|
+
|
87
|
+
def scope! scope
|
88
|
+
klass = Class.new(self)
|
89
|
+
klass.instance_variable_set(:@scope, scope)
|
90
|
+
klass
|
91
|
+
end
|
65
92
|
end
|
66
93
|
end
|
67
94
|
end
|
data/lib/wedge/middleware.rb
CHANGED
@@ -37,35 +37,34 @@ class Wedge
|
|
37
37
|
body << File.read("#{ROOT_PATH}/#{wedge_path}.rb")
|
38
38
|
end if Wedge.config.debug
|
39
39
|
when 'call'
|
40
|
-
|
41
|
-
|
40
|
+
body_data = request.body.read
|
41
|
+
data = request.params
|
42
42
|
|
43
|
+
begin
|
44
|
+
# try json
|
45
|
+
data.merge!(body_data ? JSON.parse(body_data) : {})
|
46
|
+
rescue
|
43
47
|
begin
|
44
|
-
# try
|
45
|
-
data.merge!(body_data ?
|
48
|
+
# try form data
|
49
|
+
data.merge!(body_data ? Rack::Utils.parse_query(body_data) : {})
|
46
50
|
rescue
|
47
|
-
|
48
|
-
# try form data
|
49
|
-
data.merge!(body_data ? Rack::Utils.parse_query(body_data) : {})
|
50
|
-
rescue
|
51
|
-
# no data
|
52
|
-
end
|
51
|
+
# no data
|
53
52
|
end
|
53
|
+
end
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
data = data.indifferent
|
56
|
+
name = data.delete(:__wedge_name__)
|
57
|
+
method_called = data.delete(:__wedge_method__)
|
58
|
+
method_args = data.delete(:__wedge_args__)
|
59
59
|
|
60
|
-
binding.pry
|
61
60
|
if method_args == '__wedge_data__' && data
|
62
61
|
method_args = [data]
|
63
|
-
|
62
|
+
res = Wedge.scope!(self)[name].send(method_called, *method_args) || ''
|
64
63
|
else
|
65
64
|
# This used to send things like init, we need a better way to
|
66
65
|
# send client config data to the server
|
67
66
|
# res = scope.wedge(name, data).send(method_called, *method_args) || ''
|
68
|
-
|
67
|
+
res = Wedge.scope!(self)[name].send(method_called, *method_args) || ''
|
69
68
|
end
|
70
69
|
|
71
70
|
# headers["WEDGE-CSRF-TOKEN"] = scope.csrf_token if scope.methods.include? :csrf_token
|
@@ -92,6 +91,10 @@ class Wedge
|
|
92
91
|
end
|
93
92
|
end
|
94
93
|
|
94
|
+
def wedge(*args, &block)
|
95
|
+
Wedge[*args, &block]
|
96
|
+
end
|
97
|
+
|
95
98
|
private
|
96
99
|
|
97
100
|
def path
|
@@ -5,7 +5,7 @@ class Wedge
|
|
5
5
|
before_compile do
|
6
6
|
settings = Wedge.config.settings[:uploader]
|
7
7
|
store[:settings] = settings.select do |k, v|
|
8
|
-
client
|
8
|
+
client? ? %w(aws_access_key_id bucket).include?(k) : true
|
9
9
|
end if settings
|
10
10
|
end
|
11
11
|
|
@@ -82,7 +82,7 @@ class Wedge
|
|
82
82
|
key = options.delete(:aws_name) || '{name}-{uuid}'
|
83
83
|
|
84
84
|
# add s3 container
|
85
|
-
el.after drag_n_drop_tmpl template_id
|
85
|
+
el.after drag_n_drop_tmpl template_id, options
|
86
86
|
el.after "<div id='#{container_id}'></div>"
|
87
87
|
|
88
88
|
container = dom.find("##{container_id}")
|
@@ -221,12 +221,12 @@ class Wedge
|
|
221
221
|
end
|
222
222
|
end
|
223
223
|
|
224
|
-
def drag_n_drop_tmpl id
|
224
|
+
def drag_n_drop_tmpl id, options = {}
|
225
225
|
<<-EOF
|
226
226
|
<script type="text/template" id="#{id}">
|
227
227
|
<div class="qq-uploader-selector qq-uploader">
|
228
228
|
<div class="qq-upload-button-selector qq-upload-button">
|
229
|
-
<div
|
229
|
+
<div>#{options.delete(:button_name) || 'Upload a file'}</div>
|
230
230
|
</div>
|
231
231
|
<div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone>
|
232
232
|
<span>Drop file here to upload</span> </div>
|
@@ -260,10 +260,7 @@ class Wedge
|
|
260
260
|
end
|
261
261
|
|
262
262
|
def settings
|
263
|
-
@settings ||=
|
264
|
-
aws_access_key_id: 123456,
|
265
|
-
bucket: 'wedge'
|
266
|
-
}
|
263
|
+
@settings ||= store[:settings]
|
267
264
|
end
|
268
265
|
end
|
269
266
|
end
|
data/lib/wedge/version.rb
CHANGED
@@ -8,7 +8,17 @@ class Playground
|
|
8
8
|
set_dom dom.find('body').html
|
9
9
|
end
|
10
10
|
|
11
|
+
def initialize
|
12
|
+
store[:foo] = 'bar' if server?
|
13
|
+
end
|
14
|
+
|
11
15
|
def display
|
16
|
+
# todo: make a test for this:
|
17
|
+
# puts html! {
|
18
|
+
# if foo = store[:foo]
|
19
|
+
# div foo
|
20
|
+
# end
|
21
|
+
# }.to_html
|
12
22
|
wedge(:layout).display { dom }
|
13
23
|
end
|
14
24
|
|
@@ -18,7 +18,7 @@ describe Playground::UploaderComponent do
|
|
18
18
|
|
19
19
|
context 'browser_events' do
|
20
20
|
before do
|
21
|
-
Wedge::Plugins::Uploader.
|
21
|
+
allow_any_instance_of(Wedge::Plugins::Uploader).to receive(:settings).and_return({
|
22
22
|
aws_access_key_id: 123456,
|
23
23
|
bucket: 'wedge'
|
24
24
|
})
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'wedge/plugins/uploader'
|
3
|
+
|
4
|
+
describe Wedge::Plugins::Uploader do
|
5
|
+
before do
|
6
|
+
allow(Wedge.config).to receive(:settings).and_return(
|
7
|
+
uploader: {
|
8
|
+
aws_access_key_id: 123456,
|
9
|
+
aws_secret_access_key: 654321,
|
10
|
+
bucket: 'wedge'
|
11
|
+
}
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject(:uploader) { Wedge[:uploader_plugin] }
|
16
|
+
|
17
|
+
context 'store#settings' do
|
18
|
+
it 'should have the correct settings' do
|
19
|
+
settings = uploader.config.store[:settings]
|
20
|
+
|
21
|
+
if Wedge.server?
|
22
|
+
expect(settings.keys).to include *%w'aws_access_key_id aws_secret_access_key bucket'
|
23
|
+
else
|
24
|
+
# expect(settings.keys).to include *%w'aws_access_key_id bucket'
|
25
|
+
# expect(settings.keys).not_to include *%w'aws_secret_access_key'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/wedge.gemspec
CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_development_dependency 'minitest-line'
|
26
26
|
spec.add_development_dependency 'minitest-reporters'
|
27
|
-
spec.add_development_dependency 'opal-rspec'
|
28
27
|
spec.add_development_dependency 'rspec'
|
29
28
|
spec.add_development_dependency "pry"
|
30
29
|
spec.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wedge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: opal-rspec
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
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: rspec
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -271,7 +257,7 @@ files:
|
|
271
257
|
- spec/playground/layout_spec.rb
|
272
258
|
- spec/playground/uploader_spec.rb
|
273
259
|
- spec/spec_helper.rb
|
274
|
-
-
|
260
|
+
- spec/wedge/plugins/uploader_spec.rb
|
275
261
|
- test/test.js
|
276
262
|
- test/test_basic_component.rb
|
277
263
|
- test/test_browserio.rb
|
@@ -306,6 +292,7 @@ test_files:
|
|
306
292
|
- spec/playground/layout_spec.rb
|
307
293
|
- spec/playground/uploader_spec.rb
|
308
294
|
- spec/spec_helper.rb
|
295
|
+
- spec/wedge/plugins/uploader_spec.rb
|
309
296
|
- test/test.js
|
310
297
|
- test/test_basic_component.rb
|
311
298
|
- test/test_browserio.rb
|
data/test.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'awesome_print'
|
2
|
-
|
3
|
-
requires = {
|
4
|
-
form_plugin: [],
|
5
|
-
list: [
|
6
|
-
{
|
7
|
-
name: 'claim',
|
8
|
-
requires: [
|
9
|
-
{name: 'filter_form', requires: [{ name: 'form_plugin', requires: [] }]},
|
10
|
-
{name: 'claim_form', requires: []}
|
11
|
-
],
|
12
|
-
},
|
13
|
-
{
|
14
|
-
name: 'claim_form',
|
15
|
-
requires: [
|
16
|
-
{name: 'form_plugin', requires: []},
|
17
|
-
{name: 'address_form', requires: [{ name: 'form_plugin', requires: [] }]}
|
18
|
-
],
|
19
|
-
}
|
20
|
-
]
|
21
|
-
}
|
22
|
-
|
23
|
-
$loaded_requires = []
|
24
|
-
|
25
|
-
def get_requires reqs, requires_array = []
|
26
|
-
new_reqs = []
|
27
|
-
|
28
|
-
reqs.each do |r|
|
29
|
-
if r[:requires].any?
|
30
|
-
get_requires(r[:requires], requires_array)
|
31
|
-
end
|
32
|
-
|
33
|
-
unless $loaded_requires.include? r[:name]
|
34
|
-
$loaded_requires << r[:name]
|
35
|
-
new_reqs << r[:name]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
requires_array << new_reqs if new_reqs.any?
|
40
|
-
|
41
|
-
requires_array
|
42
|
-
end
|
43
|
-
|
44
|
-
ap get_requires requires[:list]
|