turbo_reflex 0.0.23 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94a743b2b5affa9a74da2b18ada148e17e1cb24538027716742c4c037d23a646
4
- data.tar.gz: cd14a193d0e77cad794ee96bcfedded9aac76a491327157ddec8f79983c0b065
3
+ metadata.gz: c28abca449b5630362e4a5926b270c4c8075a1ef989434c0899355d96390b388
4
+ data.tar.gz: 6a767145f9a32ab240feac42051f0d2be4c4d395202641b4e8caaf3cabe9c242
5
5
  SHA512:
6
- metadata.gz: 9e36653da2dfa283fb45f78a4f124f043fdf3f68d20514d6c5902a300d4eeab136c4ae69ccf591e6cf7e51fc2de95c29d2c86b078876798e1b9e83d87f29c62b
7
- data.tar.gz: f82d726508e0dc8494d6ee7fa101478bd57095348c77d65318b6e8c387a8d870d380f2e88af3b2e691d709a81ae9fa045b4a7c04aa4187904ae4275e992006da
6
+ metadata.gz: 36568b96f6cfd94e119adec06a2624c12a042447cdbbd5973de82ed8b629135a30ef033f23384da49084fa76a76a3ccc5422e3e0ec5267269cba693f7fcbce1d
7
+ data.tar.gz: 58efc30fb5c49b605b76a5d8998cd6f6d69b4288bad4d3a3b5b1085e26236f0162e282be402e34837e1e33ec78f405cb2cb5034279ee8bf9cb6fdd70a157c02c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- turbo_reflex (0.0.23)
4
+ turbo_reflex (0.0.25)
5
5
  rails (>= 6.1)
6
6
  turbo-rails (>= 1.1)
7
7
  turbo_ready (>= 0.1)
@@ -94,11 +94,11 @@ GEM
94
94
  coderay (1.1.3)
95
95
  concurrent-ruby (1.1.10)
96
96
  crass (1.0.6)
97
- cuprite (0.14.2)
97
+ cuprite (0.14.3)
98
98
  capybara (~> 3.0)
99
- ferrum (~> 0.12.0)
99
+ ferrum (~> 0.13.0)
100
100
  erubi (1.11.0)
101
- ferrum (0.12)
101
+ ferrum (0.13)
102
102
  addressable (~> 2.5)
103
103
  concurrent-ruby (~> 1.1)
104
104
  webrick (~> 1.7)
@@ -193,19 +193,19 @@ GEM
193
193
  regexp_parser (2.6.0)
194
194
  rexml (3.2.5)
195
195
  rouge (4.0.0)
196
- rubocop (1.35.1)
196
+ rubocop (1.39.0)
197
197
  json (~> 2.3)
198
198
  parallel (~> 1.10)
199
199
  parser (>= 3.1.2.1)
200
200
  rainbow (>= 2.2.2, < 4.0)
201
201
  regexp_parser (>= 1.8, < 3.0)
202
202
  rexml (>= 3.2.5, < 4.0)
203
- rubocop-ast (>= 1.20.1, < 2.0)
203
+ rubocop-ast (>= 1.23.0, < 2.0)
204
204
  ruby-progressbar (~> 1.7)
205
205
  unicode-display_width (>= 1.4.0, < 3.0)
206
206
  rubocop-ast (1.23.0)
207
207
  parser (>= 3.1.1.0)
208
- rubocop-performance (1.14.3)
208
+ rubocop-performance (1.15.0)
209
209
  rubocop (>= 1.7.0, < 2.0)
210
210
  rubocop-ast (>= 0.4.0)
211
211
  ruby-progressbar (1.11.0)
@@ -222,15 +222,16 @@ GEM
222
222
  actionpack (>= 5.2)
223
223
  activesupport (>= 5.2)
224
224
  sprockets (>= 3.0.0)
225
+ sqlite3 (1.5.3-aarch64-linux)
225
226
  sqlite3 (1.5.3-arm64-darwin)
226
- standard (1.16.1)
227
- rubocop (= 1.35.1)
228
- rubocop-performance (= 1.14.3)
227
+ standard (1.18.0)
228
+ rubocop (= 1.39.0)
229
+ rubocop-performance (= 1.15.0)
229
230
  standardrb (1.0.1)
230
231
  standard
231
- tailwindcss-rails (2.0.19-aarch64-linux)
232
+ tailwindcss-rails (2.0.21-aarch64-linux)
232
233
  railties (>= 6.0.0)
233
- tailwindcss-rails (2.0.19-arm64-darwin)
234
+ tailwindcss-rails (2.0.21-arm64-darwin)
234
235
  railties (>= 6.0.0)
235
236
  thor (1.2.1)
236
237
  timeout (0.3.0)
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  </h1>
9
9
  <p align="center">
10
10
  <a href="http://blog.codinghorror.com/the-best-code-is-no-code-at-all/">
11
- <img alt="Lines of Code" src="https://img.shields.io/badge/loc-1209-47d299.svg" />
11
+ <img alt="Lines of Code" src="https://img.shields.io/badge/loc-1228-47d299.svg" />
12
12
  </a>
13
13
  <a href="https://codeclimate.com/github/hopsoft/turbo_reflex/maintainability">
14
14
  <img src="https://api.codeclimate.com/v1/badges/fe1162a742fe83a4fdfd/maintainability" />
@@ -112,6 +112,7 @@ TurboReflex is a lightweight Turbo Frame extension... which means that reactivit
112
112
  - [rails](https://rubygems.org/gems/rails) `>=6.1`
113
113
  - [turbo-rails](https://rubygems.org/gems/turbo-rails) `>=1.1`
114
114
  - [@hotwired/turbo-rails](https://yarnpkg.com/package/@hotwired/turbo-rails) `>=7.1`
115
+ - [ruby](https://github.com/ruby/ruby) `>=2.7`
115
116
 
116
117
  ## Setup
117
118
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ class TurboReflex::AttributeSet
4
+ def initialize(prefix, attributes: {})
5
+ prefix = prefix.to_s
6
+ attrs = attributes.to_h.transform_values(&:to_s)
7
+
8
+ attrs.each do |key, value|
9
+ key = key.to_s.strip
10
+
11
+ next unless key.start_with?(prefix)
12
+
13
+ name = key.parameterize.underscore.delete_prefix("#{prefix}_")
14
+ value = value.to_i if value.to_s.match?(/\A\d+\z/)
15
+ value = value == "true" if value.is_a?(String) && value.match?(/\A(true|false)\z/i)
16
+ instance_variable_set "@#{name}", value
17
+
18
+ next if orig_respond_to_missing?(name, false)
19
+
20
+ self.class.define_method(name) { instance_variable_get :"@#{name}" }
21
+ self.class.define_method("#{name}?") { public_send(name).present? }
22
+ end
23
+ end
24
+
25
+ def respond_to?(name, include_all = false)
26
+ respond_to_missing? name, include_all
27
+ end
28
+
29
+ alias_method :orig_respond_to_missing?, :respond_to_missing?
30
+
31
+ def respond_to_missing?(name, include_all)
32
+ true
33
+ end
34
+
35
+ def method_missing(name, *args)
36
+ return false if name.end_with?("?")
37
+ nil
38
+ end
39
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "attribute_set"
4
+
3
5
  # TurboReflex base superclass.
4
6
  # All TurboReflex classes should inherit from this class.
5
7
  #
@@ -99,20 +101,10 @@ class TurboReflex::Base
99
101
  def element
100
102
  @element ||= begin
101
103
  attributes = params[:element_attributes]
102
- attrs = attributes.keys.each_with_object({}) do |key, memo|
103
- memo[:aria] ||= {}
104
- memo[:dataset] ||= {}
105
- if key.start_with?("data_")
106
- memo[:dataset][key[5..].parameterize.underscore.to_sym] = attributes[key]
107
- elsif key.start_with?("aria_")
108
- memo[:aria][key[5..].parameterize.underscore.to_sym] = attributes[key]
109
- else
110
- memo[key.parameterize.underscore.to_sym] = attributes[key]
111
- end
112
- end
113
- attrs[:aria] = OpenStruct.new(attrs[:aria])
114
- attrs[:dataset] = OpenStruct.new(attrs[:dataset])
115
- OpenStruct.new attrs
104
+ OpenStruct.new attributes.merge(
105
+ aria: TurboReflex::AttributeSet.new(:aria, attributes: attributes),
106
+ dataset: TurboReflex::AttributeSet.new(:data, attributes: attributes)
107
+ )
116
108
  end
117
109
  end
118
110
 
@@ -92,13 +92,13 @@ class TurboReflex::State
92
92
  return if internal_keys.blank?
93
93
  return if internal_data.blank?
94
94
 
95
- percentage = max_bytesize > 0 ? ordinal_payload.bytesize / max_bytesize.to_f : 0
95
+ percentage = (max_bytesize > 0) ? ordinal_payload.bytesize / max_bytesize.to_f : 0
96
96
  while percentage > 1
97
97
  keys_to_keep = internal_keys.slice((internal_keys.length - (internal_keys.length / percentage).floor)..-1)
98
98
  keys_to_remove = internal_keys - keys_to_keep
99
99
  @internal_keys = keys_to_keep
100
100
  keys_to_remove.each { |key| internal_data.delete key }
101
- percentage = max_bytesize > 0 ? ordinal_payload.bytesize / max_bytesize.to_f : 0
101
+ percentage = (max_bytesize > 0) ? ordinal_payload.bytesize / max_bytesize.to_f : 0
102
102
  end
103
103
  end
104
104
 
@@ -135,7 +135,7 @@ class TurboReflex::StateManager
135
135
  end
136
136
 
137
137
  def write_cookie
138
- return unless changed?
138
+ return unless changed? || cookie.blank?
139
139
  cookies.signed["turbo_reflex.state"] = {value: ordinal_payload, path: "/", expires: 1.day.from_now}
140
140
  changes_applied
141
141
  rescue => error
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TurboReflex
4
- VERSION = "0.0.23"
4
+ VERSION = "0.0.25"
5
5
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "turbo_reflex",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "Reflexes for Turbo Frames that help you build robust reactive applications",
5
5
  "main": "app/javascript/index.js",
6
6
  "repository": "https://github.com/hopsoft/turbo_reflex",