turbo_reflex 0.0.23 → 0.0.25

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