stimulus_reflex 2.0.2 → 2.1.0
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.
Potentially problematic release.
This version of stimulus_reflex might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +8 -8
- data/README.md +5 -3
- data/Rakefile +1 -1
- data/bin/loc +3 -0
- data/bin/standardize +1 -1
- data/lib/stimulus_reflex/channel.rb +23 -13
- data/lib/stimulus_reflex/reflex.rb +3 -2
- data/lib/stimulus_reflex/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d807548446462e67ea049821b1de6da399d1575da3b679df3055e7bf2973fba
|
4
|
+
data.tar.gz: d204d0a31de01ac1c88baefb597982fc99882c1b25b17899593e8b90c32032d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e37b24a2783cc89a54b47bb2ba1d7305f2a64be4efbc05f9b57120dc9ee8f13e42e9299a93c205e243fb991324f5180387eb054ba11a88e46f4fc33a963ff79
|
7
|
+
data.tar.gz: 0d6dbfe3e29c00e5fd0d211ac13405953f89995ab8dfab519f0e2eab992e2372eadd63696bb3f1fde59d426f9c1d92a3329bb22603618778168b1f647601938a
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
stimulus_reflex (2.0
|
5
|
-
cable_ready (>= 4.0.
|
4
|
+
stimulus_reflex (2.1.0)
|
5
|
+
cable_ready (>= 4.0.7)
|
6
6
|
nokogiri
|
7
7
|
rack
|
8
8
|
rails (>= 5.2)
|
@@ -67,7 +67,7 @@ GEM
|
|
67
67
|
zeitwerk (~> 2.1, >= 2.1.8)
|
68
68
|
ast (2.4.0)
|
69
69
|
builder (3.2.3)
|
70
|
-
cable_ready (4.0.
|
70
|
+
cable_ready (4.0.7)
|
71
71
|
rails (>= 5.2)
|
72
72
|
coderay (1.1.2)
|
73
73
|
concurrent-ruby (1.1.5)
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
erubi (1.9.0)
|
76
76
|
globalid (0.4.2)
|
77
77
|
activesupport (>= 4.2.0)
|
78
|
-
i18n (1.
|
78
|
+
i18n (1.7.0)
|
79
79
|
concurrent-ruby (~> 1.0)
|
80
80
|
jaro_winkler (1.5.3)
|
81
81
|
loofah (2.3.0)
|
@@ -93,8 +93,8 @@ GEM
|
|
93
93
|
nio4r (2.5.2)
|
94
94
|
nokogiri (1.10.4)
|
95
95
|
mini_portile2 (~> 2.4.0)
|
96
|
-
parallel (1.
|
97
|
-
parser (2.6.
|
96
|
+
parallel (1.18.0)
|
97
|
+
parser (2.6.5.0)
|
98
98
|
ast (~> 2.4.0)
|
99
99
|
pry (0.12.2)
|
100
100
|
coderay (~> 1.1.0)
|
@@ -122,8 +122,8 @@ GEM
|
|
122
122
|
rails-dom-testing (2.0.3)
|
123
123
|
activesupport (>= 4.2.0)
|
124
124
|
nokogiri (>= 1.6)
|
125
|
-
rails-html-sanitizer (1.
|
126
|
-
loofah (~> 2.
|
125
|
+
rails-html-sanitizer (1.3.0)
|
126
|
+
loofah (~> 2.3)
|
127
127
|
railties (6.0.0)
|
128
128
|
actionpack (= 6.0.0)
|
129
129
|
activesupport (= 6.0.0)
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
[](http://blog.codinghorror.com/the-best-code-is-no-code-at-all/)
|
2
2
|
[](https://codeclimate.com/github/hopsoft/stimulus_reflex/maintainability)
|
3
|
-

|
3
|
+

|
4
4
|

|
5
|
+

|
5
6
|
|
6
7
|
# StimulusReflex
|
7
8
|
|
@@ -25,7 +26,8 @@ Everyone interacting with StimulusReflex is expected to follow the [Code of Cond
|
|
25
26
|
### Coding Standards
|
26
27
|
|
27
28
|
This project uses [Standard](https://github.com/testdouble/standard)
|
28
|
-
and [Prettier](https://github.com/
|
29
|
+
and [Prettier-Standard](https://github.com/sheerun/prettier-standard) to minimize bike shedding related to code formatting.
|
30
|
+
|
29
31
|
Please run `./bin/standardize` prior submitting pull requests.
|
30
32
|
|
31
33
|
View the [wiki](https://github.com/hopsoft/stimulus_reflex/wiki/Editor-Configuration) to see recommendations for configuring your editor to work best with the project.
|
data/Rakefile
CHANGED
data/bin/loc
ADDED
data/bin/standardize
CHANGED
@@ -18,6 +18,8 @@ class StimulusReflex::Channel < ActionCable::Channel::Base
|
|
18
18
|
|
19
19
|
def receive(data)
|
20
20
|
url = data["url"].to_s
|
21
|
+
selectors = (data["selectors"] || []).select(&:present?)
|
22
|
+
selectors = ["body"] if selectors.blank?
|
21
23
|
target = data["target"].to_s
|
22
24
|
reflex_name, method_name = target.split("#")
|
23
25
|
reflex_name = reflex_name.classify
|
@@ -27,14 +29,14 @@ class StimulusReflex::Channel < ActionCable::Channel::Base
|
|
27
29
|
begin
|
28
30
|
reflex_class = reflex_name.constantize
|
29
31
|
raise ArgumentError.new("#{reflex_name} is not a StimulusReflex::Reflex") unless is_reflex?(reflex_class)
|
30
|
-
reflex = reflex_class.new(self, url: url, element: element)
|
32
|
+
reflex = reflex_class.new(self, url: url, element: element, selectors: selectors)
|
31
33
|
delegate_call_to_reflex reflex, method_name, arguments
|
32
34
|
rescue => invoke_error
|
33
35
|
return broadcast_error("StimulusReflex::Channel Failed to invoke #{target}! #{url} #{invoke_error}", data)
|
34
36
|
end
|
35
37
|
|
36
38
|
begin
|
37
|
-
render_page_and_broadcast_morph url, reflex, data
|
39
|
+
render_page_and_broadcast_morph url, reflex, selectors, data
|
38
40
|
rescue => render_error
|
39
41
|
broadcast_error "StimulusReflex::Channel Failed to re-render #{url} #{render_error}", data
|
40
42
|
end
|
@@ -60,9 +62,9 @@ class StimulusReflex::Channel < ActionCable::Channel::Base
|
|
60
62
|
end
|
61
63
|
end
|
62
64
|
|
63
|
-
def render_page_and_broadcast_morph(url, reflex, data = {})
|
65
|
+
def render_page_and_broadcast_morph(url, reflex, selectors, data = {})
|
64
66
|
html = render_page(url, reflex)
|
65
|
-
|
67
|
+
broadcast_morphs selectors, data, html if html.present?
|
66
68
|
end
|
67
69
|
|
68
70
|
def render_page(url, reflex)
|
@@ -96,20 +98,28 @@ class StimulusReflex::Channel < ActionCable::Channel::Base
|
|
96
98
|
controller.response.body
|
97
99
|
end
|
98
100
|
|
99
|
-
def
|
100
|
-
|
101
|
-
|
101
|
+
def broadcast_morphs(selectors, data, html)
|
102
|
+
document = Nokogiri::HTML(html)
|
103
|
+
selectors.each do |selector|
|
104
|
+
match = document.css(selector)
|
105
|
+
next if match.blank?
|
106
|
+
cable_ready[stream_name].morph(
|
107
|
+
selector: selector,
|
108
|
+
html: match.inner_html,
|
109
|
+
children_only: true,
|
110
|
+
permanent_attribute_name: "data-reflex-permanent",
|
111
|
+
stimulus_reflex: data
|
112
|
+
)
|
113
|
+
end
|
102
114
|
cable_ready.broadcast
|
103
115
|
end
|
104
116
|
|
105
117
|
def broadcast_error(message, data = {})
|
106
118
|
logger.error "\e[31m#{message}\e[0m"
|
107
|
-
cable_ready[stream_name].dispatch_event
|
119
|
+
cable_ready[stream_name].dispatch_event(
|
120
|
+
name: "stimulus-reflex:500",
|
121
|
+
detail: {stimulus_reflex: data.merge(error: message)}
|
122
|
+
)
|
108
123
|
cable_ready.broadcast
|
109
124
|
end
|
110
|
-
|
111
|
-
def extract_body_html(html)
|
112
|
-
doc = Nokogiri::HTML(html)
|
113
|
-
doc.css("body").to_s
|
114
|
-
end
|
115
125
|
end
|
@@ -1,15 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class StimulusReflex::Reflex
|
4
|
-
attr_reader :channel, :url, :element
|
4
|
+
attr_reader :channel, :url, :element, :selectors
|
5
5
|
|
6
6
|
delegate :connection, to: :channel
|
7
7
|
delegate :session, to: :request
|
8
8
|
|
9
|
-
def initialize(channel, url: nil, element: nil)
|
9
|
+
def initialize(channel, url: nil, element: nil, selectors: [])
|
10
10
|
@channel = channel
|
11
11
|
@url = url
|
12
12
|
@element = element
|
13
|
+
@selectors = selectors
|
13
14
|
end
|
14
15
|
|
15
16
|
def request
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimulus_reflex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Hopkins
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -59,14 +59,14 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 4.0.
|
62
|
+
version: 4.0.7
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 4.0.
|
69
|
+
version: 4.0.7
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: bundler
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,6 +152,7 @@ files:
|
|
152
152
|
- README.md
|
153
153
|
- Rakefile
|
154
154
|
- bin/console
|
155
|
+
- bin/loc
|
155
156
|
- bin/setup
|
156
157
|
- bin/standardize
|
157
158
|
- lib/stimulus_reflex.rb
|