clientside 0.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/clientside.rb +6 -18
- data/lib/embed.erb +19 -0
- 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
|
-
|
160
|
-
|
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
|
-
|
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.
|
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-
|
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
|