clientside 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
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