svelte-on-rails 23.1.13 → 23.2.1

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: 85193a15eb9cec5c664b1ca1dcf6b1dc6a79269dee190aeb2b2cc0e180669918
4
- data.tar.gz: 21bd1480a629349b464493b9e9f6968e5507d9bd5eb4894d3d1d373918ae3487
3
+ metadata.gz: 188b86232312197fa05f561b21531d5bb351f6e1a9e0bc6b01a4efc1ec549bb5
4
+ data.tar.gz: 9897db5e3d372f5a219290c0f2752458bbf1b9d70a09c1e97cc5fec1b892033e
5
5
  SHA512:
6
- metadata.gz: 9468fcf77336dfd724ec26cb58628c697dec6cb09e9bd468281c27a63e5bf6f4ad780db4704929ef18dbd9fd9713747b1b63cc91d631b20ccaccf6ae946c8c62
7
- data.tar.gz: '06488a998c5f3f4df102fbf6444ec44ece1d3d952374c7fe09a704f140868b5583290aaee07c86cb67eb66ccfe7a30cbf0f4f345ba13185d760b28b41a8bf792'
6
+ metadata.gz: 95689fba187dd93dd27c5640a154d44a070e5edd3bca2bd90d262ad8b3ca203889b2e03061213850c25c6e7d88316549e2b573cae5002254993c3b31fce183b8
7
+ data.tar.gz: 3662c1b54bf95a94d1b80f13386cec8994699ee4f983a29c130dcda92a7a8b6a9a1d51b2ef1c7a30676e5d15c43e52d93b1711469a8c7c3e4b78874fba13530e
@@ -39,11 +39,14 @@ module SvelteOnRails
39
39
  associations.merge!(attr)
40
40
  else
41
41
 
42
- if !model.method_defined?(attr) && !model.attribute_names.include?(attr.to_s)
43
- raise "ERROR: Attribute or method «#{attr}» not found in model «#{model}»"
42
+ attr_s = attr.to_s
43
+ dot_index = attr_s.index('.')
44
+ _at = dot_index ? attr_s[0...dot_index].delete_suffix('&') : attr_s
45
+ if !model.method_defined?(_at) && !model.attribute_names.include?(_at)
46
+ raise "ERROR: Attribute or method «#{_at}» not found in model «#{_at}»"
44
47
  end
45
48
  @labels[key] ||= {}
46
- @labels[key][attr.to_s] ||= column_attributes(model, attr)
49
+ @labels[key][_at] ||= column_attributes(model, _at)
47
50
  @labels[key]['self'] ||= model_attributes(model)
48
51
 
49
52
  end
@@ -62,12 +62,11 @@ module SvelteOnRails
62
62
  enums = record.class.try(:defined_enums) || {}
63
63
 
64
64
  attributes.each do |attr|
65
- validate_attribute!(record, attr)
66
65
 
67
66
  key_s = attr.to_s
68
- value = record.send(attr)
67
+ value = chained_send(record, key_s)
69
68
 
70
- values[key_s] = enums.key?(key_s) ? record.send(key_s) : value
69
+ values[key_s] = enums.key?(key_s) ? chained_send(record, key_s) : value
71
70
  end
72
71
 
73
72
  associations.each do |key, val|
@@ -119,12 +118,19 @@ module SvelteOnRails
119
118
  obj.is_a?(ActiveRecord::Associations::CollectionProxy)) rescue false
120
119
  end
121
120
 
122
- def self.validate_attribute!(record, attr)
123
- unless attr.is_a?(Symbol) || attr.is_a?(String)
124
- raise ArgumentError, "Attribute must be Symbol or String, got #{attr.inspect}"
125
- end
126
- unless record.respond_to?(attr)
127
- raise "[SOR] to_svelte: No method #{attr.inspect} on #{record.class}"
121
+ def self.chained_send(object, path)
122
+ calls = path.to_s.scan(/(&?\.)?([a-zA-Z_]\w*[!?=]?)/)
123
+
124
+ calls.reduce(object) do |current, (operator, method_name)|
125
+ return nil if operator == "&." && current.nil?
126
+
127
+ raise ArgumentError, "[SOR] Cannot call #{method_name} on nil" if current.nil?
128
+
129
+ unless current.respond_to?(method_name)
130
+ raise ArgumentError, "[SOR] No method #{method_name.inspect} on #{current.class}"
131
+ end
132
+
133
+ current.public_send(method_name)
128
134
  end
129
135
  end
130
136
  end
@@ -140,8 +140,6 @@ module SvelteOnRails
140
140
  }
141
141
  )
142
142
 
143
- svelte_props[:test] = 'hello'
144
-
145
143
  ht_opts[:class] = "svelte-component #{ht_opts[:class]}"
146
144
  ht_opts[:data][:props] = svelte_props.to_json
147
145
  ht_opts[:data][:svelte_status] = (@options[:hydrate] == false ? 'do-not-hydrate-me' : 'ssr')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svelte-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 23.1.13
4
+ version: 23.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Sedlmair