wedge 0.0.1 → 0.0.2

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.
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