wedge 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8340fb116771d36a3d38e5b7962ea7997dc7395c
4
- data.tar.gz: 2a825be528f91994b5b2d5940c97da26e8324c54
3
+ metadata.gz: 104befdb183707b249388b194de614ac87ebc47c
4
+ data.tar.gz: 9b007fe20e46d8207c4334c9defeebf8007e0fd3
5
5
  SHA512:
6
- metadata.gz: 9d92de2a07944a6114c5cc5753c3410d52b9d6e7e72a5ad9258d626aef3ebe571b5e0c859aefb88e7c49a36e4faf7375c78ed1a127edc1c3a8201da0b1a4ff6d
7
- data.tar.gz: 96c2984a99b0b44f923da8dfbc719805ffa789e2dfb96307d27e77835b2d66aef1929cdae8c6eedd1e2128c94abae9100a02899e8398d9111a349f8e30053116
6
+ metadata.gz: a99bbb4dddcea088c59fc6e5600c169c9c77e025c73bbe59f68c97c4945a489b9d814c2a65505ed30b48f7f78ca4fcb25cf5d06cad4f5cabb317ab4e91fadfcb
7
+ data.tar.gz: 860a55ee486f858393be4bcb539fa94a23123f6adbcfb732850379e4e908c442acf0a6b0be0a75325dc2a13468f7787a0fd5f4f971307ede66ef31d8cf7c32ad
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # BrowserIO
1
+ # Wedge
2
2
 
3
3
  Components for Ruby.
4
4
 
@@ -7,7 +7,7 @@ Components for Ruby.
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'browserio'
10
+ gem 'wedge'
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -16,13 +16,13 @@ And then execute:
16
16
 
17
17
  Or install it yourself as:
18
18
 
19
- $ gem install browserio
19
+ $ gem install wedge
20
20
 
21
21
  ## Basic Usage
22
22
 
23
23
  ### Setup
24
24
 
25
- class BasicComponent < BrowserIO::Component
25
+ class BasicComponent < Wedge::Component
26
26
  setup do |config|
27
27
  config.name :basic
28
28
  end
@@ -34,7 +34,7 @@ Or install it yourself as:
34
34
 
35
35
  ### Call
36
36
 
37
- Browser[:basic].foo
37
+ Wedge[:basic].foo
38
38
 
39
39
  ### Response
40
40
 
@@ -42,7 +42,7 @@ Or install it yourself as:
42
42
 
43
43
  ## Contributing
44
44
 
45
- 1. Fork it ( https://github.com/[my-github-username]/BrowserIO/fork )
45
+ 1. Fork it ( https://github.com/[my-github-username]/Wedge/fork )
46
46
  2. Create your feature branch (`git checkout -b my-new-feature`)
47
47
  3. Commit your changes (`git commit -am 'Add some feature'`)
48
48
  4. Push to the branch (`git push origin my-new-feature`)
@@ -16,12 +16,12 @@ class Roda
16
16
  v.each { |p| ::Wedge.config.plugin p }
17
17
  when 'scope'
18
18
  begin
19
- ::Wedge.config.scope v.new
19
+ ::Wedge.config.opts[:scope] = v.new
20
20
  rescue
21
- ::Wedge.config.scope v.new('')
21
+ ::Wedge.config.opts[:scope] = v.new({})
22
22
  end
23
23
  else
24
- ::Wedge.config.send(k, v)
24
+ ::Wedge.config.opts[k.to_sym] = v
25
25
  end
26
26
  end
27
27
  end
@@ -81,7 +81,13 @@ class Roda
81
81
 
82
82
  res
83
83
  else
84
- "#{::Wedge.javascript(component)}\n//# sourceMappingURL=/assets/wedge/#{component}.map"
84
+ scope.response.headers['Content-Type'] = 'application/javascript; charset=UTF-8'
85
+
86
+ if ::Wedge.opts[:debug]
87
+ "#{::Wedge.javascript(component)}\n//# sourceMappingURL=/assets/wedge/#{component}.map"
88
+ else
89
+ ::Wedge.javascript(component)
90
+ end
85
91
  end
86
92
  end
87
93
  end
data/lib/wedge.rb CHANGED
@@ -24,7 +24,7 @@ module Wedge
24
24
  attr_accessor :requires, :loaded_requires, :loaded_requires_events, :javascript_cache,
25
25
  :wedge_javascript_loaded
26
26
 
27
- def cache
27
+ def compile_opal
28
28
  javascript
29
29
  end
30
30
 
@@ -121,11 +121,15 @@ module Wedge
121
121
  else
122
122
  Wedge.loaded_requires ||= []
123
123
  Wedge.loaded_requires_events ||= []
124
- reqs = Wedge.requires[options[:name].to_sym].dup
124
+ reqs = Wedge.requires[options[:name].to_sym]
125
125
  promise = Promise.new
126
- requires = get_requires(reqs)
127
126
 
128
- load_requires(requires.dup, promise)
127
+ if reqs
128
+ requires = get_requires(reqs.dup)
129
+ load_requires(requires.dup, promise)
130
+ else
131
+ promise.resolve true
132
+ end
129
133
 
130
134
  promise.then do
131
135
  load_comp(options).then do
@@ -2,7 +2,7 @@ module Wedge
2
2
  class Component
3
3
  include Methods
4
4
 
5
- REJECTED_CLIENT_OPTS = %i(scope file_path methods_wrapped events klass on on_server_methods added_class_events loaded html)
5
+ ALLOWED_CLIENT_OPTS = %i(name path_name method_args method_called cache tmpl key cache_assets assets_key assets_url requires object_events)
6
6
 
7
7
  class << self
8
8
  # Override the default new behaviour
@@ -168,7 +168,7 @@ module Wedge
168
168
  end
169
169
 
170
170
  def client_wedge_opts
171
- wedge_config.opts_dup.reject {|k, v| REJECTED_CLIENT_OPTS.include? k }
171
+ wedge_config.opts_dup.select {|k, v| ALLOWED_CLIENT_OPTS.include? k }
172
172
  end
173
173
 
174
174
  def wedge_on_server(&block)
@@ -192,7 +192,8 @@ module Wedge
192
192
 
193
193
  HTTP.post("/#{wedge_opts.assets_url}/#{path_name}.call",
194
194
  headers: {
195
- 'X-CSRF-TOKEN' => Element.find('meta[name=_csrf]').attr('content')
195
+ 'X-CSRF-TOKEN' => Element.find('meta[name=_csrf]').attr('content'),
196
+ 'X-WEDGE-METHOD-REQUEST' => true
196
197
  },
197
198
  payload: payload) do |response|
198
199
 
@@ -216,6 +217,16 @@ module Wedge
216
217
  end
217
218
  end
218
219
 
220
+ def wedge_scope
221
+ wedge_opts[:scope]
222
+ end
223
+ alias_method :scope, :wedge_scope
224
+
225
+ def wedge_cache
226
+ wedge_opts[:cache]
227
+ end
228
+ alias_method :cache, :wedge_cache
229
+
219
230
  # Duplicate of class condig [Config]
220
231
  # @return config [Config]
221
232
  def wedge_config
@@ -281,6 +292,16 @@ module Wedge
281
292
  end
282
293
  alias_method :function, :wedge_function
283
294
 
295
+ def wedge_from_server?
296
+ !defined?(request) || (request && !request.env.include?('HTTP_X_WEDGE_METHOD_REQUEST'))
297
+ end
298
+ alias_method :from_server?, :wedge_from_server?
299
+
300
+ def wedge_from_client?
301
+ !wedge_from_server?
302
+ end
303
+ alias_method :from_client?, :wedge_from_client?
304
+
284
305
  def wedge_javascript
285
306
  return unless server?
286
307
 
@@ -295,7 +316,7 @@ module Wedge
295
316
  alias_method :javscript, :wedge_javascript
296
317
 
297
318
  def client_wedge_opts
298
- wedge_config.opts_dup.reject {|k, v| REJECTED_CLIENT_OPTS.include? k }
319
+ wedge_config.opts_dup.select {|k, v| ALLOWED_CLIENT_OPTS.include? k }
299
320
  end
300
321
  alias_method :client_opts, :client_wedge_opts
301
322
 
data/lib/wedge/config.rb CHANGED
@@ -16,6 +16,7 @@ module Wedge
16
16
  def initialize(opts = {})
17
17
  opts = {
18
18
  cache_assets: false,
19
+ cache: OpenStruct.new,
19
20
  assets_key: false,
20
21
  tmpl: IndifferentHash.new,
21
22
  scope: false,
@@ -48,18 +49,13 @@ module Wedge
48
49
  opts.is_plugin
49
50
  end
50
51
 
51
- %w(scope assets_url cache_assets assets_key).each do |m|
52
- define_method m do |v|
53
- opts[m] = v
54
- end
55
- end
56
-
57
52
  # Used to set and update the dom
58
53
  def dom
59
54
  if server?
60
55
  yield
61
56
  end
62
57
  end
58
+ alias_method :setup, :dom
63
59
 
64
60
  # Set the raw html
65
61
  # @param html [String]
@@ -88,6 +84,12 @@ module Wedge
88
84
  opts.to_h.inject({}) {|copy, (key, value)| copy[key] = value.dup rescue value; copy}
89
85
  end
90
86
 
87
+ %w(scope assets_url cache_assets assets_key debug).each do |m|
88
+ define_method m do |v|
89
+ opts[m] = v
90
+ end
91
+ end
92
+
91
93
  def plugin(name)
92
94
  unless RUBY_ENGINE == 'opal'
93
95
  require "wedge/plugins/#{name}"
@@ -108,7 +110,11 @@ module Wedge
108
110
  previous_requires.each { |p| requires.delete(p) }
109
111
 
110
112
  requires.each do |r|
111
- klass = Wedge.components[r.to_sym].klass
113
+ begin
114
+ klass = Wedge.components[r.to_sym].klass
115
+ rescue
116
+ raise "No component named: #{r}"
117
+ end
112
118
  o = klass.client_wedge_opts.select do |k, v|
113
119
  %w(path_name name requires).include? k.to_s
114
120
  end
@@ -16,9 +16,12 @@ module Nokogiri
16
16
 
17
17
  private
18
18
 
19
+ alias_method :original_coerce, :coerce
19
20
  def coerce data # :nodoc:
20
21
  if data.class.to_s == 'Wedge::DOM'
21
22
  data = data.dom
23
+ elsif data.class.to_s[/DOM$/]
24
+ return original_coerce data
22
25
  end
23
26
 
24
27
  case data
data/lib/wedge/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Wedge
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - cj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-24 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal