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