stimulus_reflex 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
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
|
-
[![Lines of Code](http://img.shields.io/badge/lines_of_code-
|
1
|
+
[![Lines of Code](http://img.shields.io/badge/lines_of_code-472-brightgreen.svg?style=flat)](http://blog.codinghorror.com/the-best-code-is-no-code-at-all/)
|
2
2
|
[![Maintainability](https://api.codeclimate.com/v1/badges/2b24fdbd1ae37a24bedb/maintainability)](https://codeclimate.com/github/hopsoft/stimulus_reflex/maintainability)
|
3
|
-
![Prettier](https://github.com/hopsoft/stimulus_reflex/workflows/Prettier/badge.svg)
|
3
|
+
![Prettier-Standard](https://github.com/hopsoft/stimulus_reflex/workflows/Prettier-Standard/badge.svg)
|
4
4
|
![StandardRB](https://github.com/hopsoft/stimulus_reflex/workflows/StandardRB/badge.svg)
|
5
|
+
![Tests](https://github.com/hopsoft/stimulus_reflex/workflows/Tests/badge.svg)
|
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
|