ecoportal-api 0.4.1 → 0.4.2

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: 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