live 0.13.0 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/live/element.rb +2 -2
- data/lib/live/page.rb +20 -14
- data/lib/live/resolver.rb +1 -1
- data/lib/live/version.rb +1 -1
- data/lib/live/view.rb +3 -3
- data/lib/live.rb +3 -3
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf47630cac82b5611f454d7c61b1db67d8802c91eabc819d44d2e1a82ffd1d96
|
4
|
+
data.tar.gz: ce5bcd2dd5a5bc0c98357eb963aaa38ff83c4e312da85c0f3b4e79ca546e6d72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd5eaca0a5038361c60d13de5bc8b5e8e5ce66f0e828c74c0c199d6a8d9706bee31fbeff1365155b41b59241c2be4f405f6d1186c44b928510d1d94ad7e42000
|
7
|
+
data.tar.gz: 0f0956b2f4a4d79af54ee01e965585d370633eac1ad23ded24c817e43f0b7b8dd681a5187607fe2fdf4fa52be385f4c20ec25a09c55ceee5c00fe846c8a4cde1
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/live/element.rb
CHANGED
data/lib/live/page.rb
CHANGED
@@ -3,14 +3,16 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "element"
|
7
|
+
require_relative "resolver"
|
8
8
|
|
9
|
-
require
|
10
|
-
require
|
9
|
+
require "async"
|
10
|
+
require "async/queue"
|
11
11
|
|
12
|
-
require
|
13
|
-
require
|
12
|
+
require "protocol/websocket"
|
13
|
+
require "protocol/websocket/message"
|
14
|
+
|
15
|
+
require "console/event/failure"
|
14
16
|
|
15
17
|
module Live
|
16
18
|
# Represents a connected client page with bound dynamic content areas.
|
@@ -74,30 +76,34 @@ module Live
|
|
74
76
|
|
75
77
|
def close
|
76
78
|
@elements.each do |id, element|
|
77
|
-
|
79
|
+
begin
|
80
|
+
element.close
|
81
|
+
rescue => error
|
82
|
+
Console::Event::Failure.for(error).emit(self)
|
83
|
+
end
|
78
84
|
end
|
79
85
|
end
|
80
86
|
|
81
87
|
# Process a single incoming message from the network.
|
82
88
|
def process_message(message)
|
83
89
|
case message[0]
|
84
|
-
when
|
90
|
+
when "bind"
|
85
91
|
# Bind a client-side element to a server-side element.
|
86
92
|
if element = self.resolve(message[1], message[2])
|
87
93
|
self.bind(element)
|
88
94
|
else
|
89
95
|
Console.warn(self, "Could not resolve element:", message)
|
90
|
-
@updates.enqueue([
|
96
|
+
@updates.enqueue(["error", message[1], "Could not resolve element!"])
|
91
97
|
end
|
92
|
-
when
|
98
|
+
when "unbind"
|
93
99
|
# Unbind a client-side element from a server-side element.
|
94
100
|
if element = @elements.delete(message[1])
|
95
101
|
element.close unless @attached.key?(message[1])
|
96
102
|
else
|
97
103
|
Console.warn(self, "Could not unbind element:", message)
|
98
|
-
@updates.enqueue([
|
104
|
+
@updates.enqueue(["error", message[1], "Could not unbind element!"])
|
99
105
|
end
|
100
|
-
when
|
106
|
+
when "event"
|
101
107
|
# Handle an event from the client.
|
102
108
|
self.handle(message[1], message[2])
|
103
109
|
else
|
@@ -111,14 +117,14 @@ module Live
|
|
111
117
|
Sync do |task|
|
112
118
|
queue_task = task.async do
|
113
119
|
while update = @updates.dequeue
|
114
|
-
Console.debug(self, "Sending update:", update)
|
115
120
|
::Protocol::WebSocket::TextMessage.generate(update).send(connection)
|
121
|
+
|
122
|
+
# Flush the output if there are no more updates:
|
116
123
|
connection.flush if @updates.empty?
|
117
124
|
end
|
118
125
|
end
|
119
126
|
|
120
127
|
while message = connection.read
|
121
|
-
Console.debug(self, "Reading message:", message)
|
122
128
|
process_message(message.parse)
|
123
129
|
end
|
124
130
|
ensure
|
data/lib/live/resolver.rb
CHANGED
data/lib/live/version.rb
CHANGED
data/lib/live/view.rb
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require
|
6
|
+
require_relative "element"
|
7
|
+
require "xrb/builder"
|
8
8
|
|
9
9
|
module Live
|
10
10
|
# Represents a single division of content on the page an provides helpers for rendering the content.
|
@@ -12,7 +12,7 @@ module Live
|
|
12
12
|
# @returns [Object] The generated HTML.
|
13
13
|
def to_html
|
14
14
|
XRB::Builder.fragment do |builder|
|
15
|
-
builder.inline_tag :div, id: @id, class:
|
15
|
+
builder.inline_tag :div, id: @id, class: "live", data: @data do
|
16
16
|
render(builder)
|
17
17
|
end
|
18
18
|
end
|
data/lib/live.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: live
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -39,7 +39,7 @@ cert_chain:
|
|
39
39
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
40
40
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
41
41
|
-----END CERTIFICATE-----
|
42
|
-
date: 2024-
|
42
|
+
date: 2024-09-23 00:00:00.000000000 Z
|
43
43
|
dependencies:
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: async-websocket
|
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
requirements: []
|
107
|
-
rubygems_version: 3.
|
107
|
+
rubygems_version: 3.4.19
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Live HTML tags updated via a WebSocket.
|
metadata.gz.sig
CHANGED
Binary file
|