ecoportal-api 0.4.1 → 0.4.2

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: 1336e02ab24ebd2ffa1ee734fa8c41ce18bb8afc892e771e38aac15c50c5ba72
4
- data.tar.gz: 2e7ec0cb920b9972d666e3645d43ae3a503cd9425d968c24519712257751b14a
3
+ metadata.gz: d1914cfc85642ce0eb960a35e6dc4d97282940945e8a366cd2151a69fc6b7ce8
4
+ data.tar.gz: 31d89929059068830b89ccae88343a20643531d5165ca0e62464bf2f9a4f0576
5
5
  SHA512:
6
- metadata.gz: a877e517ddb1ee1cd71e6e40806a685a2bcb09ee7a7c73726e4fbd1527175cdb0e84bf24e592cb56b7f3686ab1b6729931346636add41edf5b987156444f1942
7
- data.tar.gz: d60a8dc08b2d26b28b4aeaec0bd0cf708f2a05977761554362ab848c640d5cc5f5b74b9054eddcf5f4d62f0952a24719da086bf3572ccea980c0754295d8db01
6
+ metadata.gz: 9325950d7ea384111f5905635b879ce83ebbc9174409f54ef63b172ad4da1d35aee37e37d97593e161c9a62449266dbcd05a1ba2da194ae2a3cbcdce72831f55
7
+ data.tar.gz: 68e5c643263e021dbd88eb26710c9cd549913d57164b6a53aebbb98cf8b38809525c88f0f709680fed8e926fdce88310a20956585b97d829f0fe7c86d5e5b333
@@ -53,14 +53,14 @@ module Ecoportal
53
53
 
54
54
  def doc
55
55
  raise UnlinkedModel.new unless linked?
56
- return _parent.doc[_key] unless _parent == self
57
- @doc
56
+ return @doc if is_root?
57
+ _parent.doc.dig(*[_key].flatten)
58
58
  end
59
59
 
60
60
  def original_doc
61
61
  raise UnlinkedModel.new unless linked?
62
- return _parent.original_doc[_key] unless _parent == self
63
- @original_doc
62
+ return @original_doc if is_root?
63
+ _parent.original_doc.dig(*[_key].flatten)
64
64
  end
65
65
 
66
66
  def as_json
@@ -82,21 +82,21 @@ module Ecoportal
82
82
 
83
83
  def consolidate!
84
84
  raise UnlinkedModel.new unless linked?
85
- case
86
- when @original_doc
87
- @original_doc = JSON.parse(@doc.to_json)
85
+ new_doc = JSON.parse(doc.to_json)
86
+ if is_root?
87
+ @original_doc = new_doc
88
88
  else
89
- _parent.original_doc[_key] = JSON.parse(doc.to_json)
89
+ dig_set(_parent.original_doc, [_key].flatten, new_doc)
90
90
  end
91
91
  end
92
92
 
93
93
  def reset!
94
94
  raise UnlinkedModel.new unless linked?
95
- case
96
- when @doc
97
- @doc = JSON.parse(@original_doc.to_json)
95
+ new_doc = JSON.parse(original_doc.to_json)
96
+ if is_root?
97
+ @doc = new_doc
98
98
  else
99
- _parent.doc[_key] = JSON.parse(original_doc.to_json)
99
+ dig_set(_parent.doc, [_key].flatten, new_doc)
100
100
  end
101
101
  end
102
102
 
@@ -107,9 +107,22 @@ module Ecoportal
107
107
 
108
108
  protected
109
109
 
110
+ def is_root?
111
+ _parent == self && !!defined?(@doc)
112
+ end
113
+
110
114
  def linked?
111
- is_root = _parent == self && defined?(@doc)
112
- is_root || _parent.doc[_key]
115
+ is_root? || !!_parent.doc.dig(*[_key].flatten)
116
+ end
117
+
118
+ private
119
+
120
+ def dig_set(obj, keys, value)
121
+ if keys.length == 1
122
+ obj[keys.first] = value
123
+ else
124
+ dig_set(obj[keys.first], keys.slice(1..-1), value)
125
+ end
113
126
  end
114
127
 
115
128
  end
@@ -22,8 +22,8 @@ module Ecoportal
22
22
  # @return [Array<SchemaFieldValue>] the array of fields of the schema.
23
23
  def fields
24
24
  return @fields if defined?(@fields)
25
- @fields = (doc["fields"] || []).map do |field|
26
- schema_field_value_class.new(field)
25
+ @fields = (doc["fields"] || []).each_with_index.map do |field, i|
26
+ schema_field_value_class.new(field, parent: self, key: ["fields", i])
27
27
  end
28
28
  end
29
29
 
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- VERSION = "0.4.1"
3
+ VERSION = "0.4.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tapio Saarinen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-26 00:00:00.000000000 Z
11
+ date: 2019-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler