clientside 0.3 → 0.4

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.
Files changed (3) hide show
  1. data/lib/clientside.rb +6 -18
  2. data/lib/embed.erb +19 -0
  3. metadata +3 -2
data/lib/clientside.rb CHANGED
@@ -3,8 +3,11 @@ require 'faye/websocket'
3
3
  require 'rack/static'
4
4
  require 'securerandom'
5
5
  require 'ostruct'
6
+ require 'erb'
6
7
 
7
8
  module Clientside
9
+ GEM_DIR = File.dirname(__FILE__)
10
+
8
11
  module Accessible
9
12
  class << self
10
13
  attr_accessor :cur_os
@@ -156,8 +159,8 @@ module Clientside
156
159
  class Middleware < NoResMiddleware
157
160
  def initialize(*args)
158
161
  super
159
- dir = File.dirname(__FILE__)
160
- @app = Rack::Static.new(@app, urls: ['/__clientside_res__'], root: dir)
162
+ @app = Rack::Static.new(
163
+ @app, urls: ['/__clientside_res__'], root: GEM_DIR)
161
164
  end
162
165
  end
163
166
 
@@ -166,22 +169,7 @@ module Clientside
166
169
  raise ArgumentError, "invalid var name" unless var =~ /\A[a-zA-Z_]\w*\Z/
167
170
  end
168
171
  cid = Middleware.add_pending objs.values
169
- sock_var = '$__clientside_socket__'
170
- js = ""
171
- js << %Q(<script src="/__clientside_res__/promise.min.js"></script>\n)
172
- js << %Q(<script src="/__clientside_res__/clientside.js"></script>\n)
173
- js << %Q(<script>\n)
174
- objs.each do |var, obj|
175
- js << %Q(var #{var};\n)
176
- end
177
- js << %Q(var #{sock_var} = makeClientsideSocket("#{cid}");\n)
178
- js << %Q(#{sock_var}.onopen = function() {\n)
179
- objs.each do |var, obj|
180
- json = JSON.dump obj
181
- js << %Q( #{var} = makeClientsideProxy(#{sock_var}, #{json});\n)
182
- end
183
- js << %Q(};\n)
184
- js << %Q(</script>\n)
172
+ ERB.new(File.read(GEM_DIR + '/embed.erb'), nil, '-').result(binding)
185
173
  end
186
174
  end
187
175
 
data/lib/embed.erb ADDED
@@ -0,0 +1,19 @@
1
+ <script src="/__clientside_res__/promise.min.js"></script>
2
+ <script src="/__clientside_res__/clientside.js"></script>
3
+ <script>
4
+ var $__clientside_socket__ = makeClientsideSocket("<%= cid %>");
5
+ <% objs.each do |var, obj| -%>
6
+ var <%= var %>;
7
+ <% end -%>
8
+ function $__clientside_init__() {
9
+ <% objs.each do |var, obj| -%>
10
+ <% json = JSON.dump obj -%>
11
+ <%= var %> = makeClientsideProxy($__clientside_socket__, <%= json %>);
12
+ <% end -%>
13
+ }
14
+ $__clientside_socket__.onopen = $__clientside_init__;
15
+ if ($__clientside_socket__.readyState == 1 && !<%= objs.keys.first %>) {
16
+ $__clientside_init__();
17
+ }
18
+ </script>
19
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clientside
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faye-websocket
@@ -53,6 +53,7 @@ files:
53
53
  - lib/__clientside_res__/promise.min.js
54
54
  - lib/__clientside_res__/clientside.js
55
55
  - lib/clientside.rb
56
+ - lib/embed.erb
56
57
  - examples/printer/views/printer.erb
57
58
  - examples/printer/config.ru
58
59
  - examples/printer/testapp.rb