ja2r 0.6.5 → 0.7.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ja2r/element.rb +23 -9
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5361b2e5c4c5b7a06c08459055918e79badd4862742c2df1fd4d4c367bc73a7
4
- data.tar.gz: 07b25e5a4c6356848b5916a38fdb29cc40704d1d9498332fc41a650f62dfa991
3
+ metadata.gz: 1cd6c7ae8b3dfe30cbda079f609f7b5714aa7efafd414543e8742cc387c2de21
4
+ data.tar.gz: b33db4d70748e16c1344a1a9a97d758f4b098aea1fce870803b24c35495af340
5
5
  SHA512:
6
- metadata.gz: 6d5574472dcd6b0851b1af6b38efb1185bb927ab3ad87e89fa293efe5ae94b765a4b91e3133b914b2c5d0a082f06c2579825c462dca3fd47be0327c6ba62f1a7
7
- data.tar.gz: 8fc761884f6e1faaf3517a37b9f7c4ea99bace48c30d5bda5df61d169e1ff348facea6b36b64d9e4504fd1d35837551ba51ebbe8e9b57b0450358924cb3ccdd3
6
+ metadata.gz: 675d9425b158ad936d4b0c1484a7c6e9f7f806715dcf49b3c2368874c5c1d15211a9fc4a44da746d1fac21ccfc9a36dd256254c2f585d86969f62a66388e146b
7
+ data.tar.gz: c4582a1f04c882fa96d0c0b705f1c023d95f5c7ef943df949a52a93355da4841b5e1010b66d5491b28ff8858c821cdaaad44eda04852bfc84793d97b3241747d
data/lib/ja2r/element.rb CHANGED
@@ -3,7 +3,8 @@ module JA2R
3
3
  def initialize(origin_data, options = {})
4
4
  @origin_data = origin_data.with_indifferent_access
5
5
  @options = options
6
- @relationships = origin_data['relationships'] ? convert_relationships(origin_data['relationships']) : {}
6
+ @relationships = origin_data['relationships']&.then { |rd| convert_relationships(rd) } || {}
7
+ build_references
7
8
  end
8
9
 
9
10
  attr_reader :origin_data, :relationships
@@ -39,18 +40,31 @@ module JA2R
39
40
 
40
41
  private
41
42
 
42
- def method_missing(symbol, *args)
43
- return attributes[symbol] if attributes&.key? symbol
44
- return relationships[symbol] if relationships&.key? symbol
43
+ def build_references
44
+ @references = {}.with_indifferent_access
45
+ attributes&.each_key do |key|
46
+ @references[key] ||= {attribute: key}
47
+ @references[key.underscore] ||= {attribute: key}
48
+ end
49
+ relationships&.each_key do |key|
50
+ @references[key] ||= {relationship: key}
51
+ @references[key.underscore] ||= {relationship: key}
52
+ end
53
+ end
45
54
 
46
- safe_traverse? ? nil : super
55
+ def method_missing(symbol, *args)
56
+ case @references[symbol]
57
+ in attribute:
58
+ attributes[attribute]
59
+ in relationship:
60
+ relationships[relationship]
61
+ else
62
+ safe_traverse? ? nil : super
63
+ end
47
64
  end
48
65
 
49
66
  def respond_to_missing?(symbol, include_all = false)
50
- return true if attributes&.key?(symbol)
51
- return true if relationships&.key?(symbol)
52
-
53
- safe_traverse? ? true : super
67
+ @references.key?(symbol) || safe_traverse? || super
54
68
  end
55
69
 
56
70
  def safe_traverse?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ja2r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mkon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport
@@ -18,7 +18,7 @@ dependencies:
18
18
  version: '6.1'
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
- version: '8.0'
21
+ version: '8.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,7 +28,7 @@ dependencies:
28
28
  version: '6.1'
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
- version: '8.0'
31
+ version: '8.1'
32
32
  email:
33
33
  - konstantin@munteanu.de
34
34
  executables: []
@@ -54,7 +54,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: '3.1'
57
+ version: '3.2'
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '3.5'
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements: []
67
- rubygems_version: 3.6.2
67
+ rubygems_version: 3.6.9
68
68
  specification_version: 4
69
69
  summary: Simple JSON-API to ruby object conversion
70
70
  test_files: []