pipe_fitter 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: d7fb6064d720bceb50a5f67593a34d8ab88e0265
4
- data.tar.gz: 42ad10d0a56aa467273b792ba3e96d0940a2e6a6
3
+ metadata.gz: 6ca34c72ead67585ab3933c20339c6024dba555d
4
+ data.tar.gz: 434c953698fb018b6babfbdcde83e1f4d770ab2c
5
5
  SHA512:
6
- metadata.gz: 80191b605a9a17ae25820fbf1a0ab4baa5908e009d8fb96e11b9ad8a1e5bb85d9873e221cd01ebde4ec4b5d912b918df106b1eb9db6fbe5f0b37e7a13c329633
7
- data.tar.gz: a4a95adea95583151321ef7eef80f773f0052573f25a7c66abb06e6b1574c07ada735d9b50243876cd9f8a1374b0ee08e5dfd6d97d028f9e7a99a60279b71e3d
6
+ metadata.gz: a4ffd2b3e959cda33c02760755be11f05460c144a8700915f20a4f04fac44d74b825b29e25fbd03f4646fcb24333ca8afeb8b5e24640f09a3dac30af44b114c3
7
+ data.tar.gz: 0fe0ec48c13e2bcc260d9dbe7cae396a265e8f7f555fedb669c112874f48f6f2ec1d50939aca8a7496473374eac4f500e16cd36cb54f5f4654a4aad974f5026e
@@ -98,14 +98,40 @@ module PipeFitter
98
98
  end
99
99
  h
100
100
  end
101
+
102
+ private_class_method def self.update_hash(base, key, value)
103
+ if base.key?(key)
104
+ base[key] = [base[key]] unless base[key].is_a?(Array)
105
+ base[key] << value
106
+ base[key].sort!
107
+ else
108
+ base[key] = value
109
+ end
110
+ base
111
+ end
112
+
113
+ def split_object(obj, skip_keys)
114
+ res = []
115
+ obj.each do |k, v|
116
+ next if skip_keys.include?(k)
117
+ (v.is_a?(Array) ? v : [v]).each do |vv|
118
+ if vv.is_a?(Hash) && vv.key?(:ref)
119
+ res << { key: k, ref_value: vv[:ref] }
120
+ else
121
+ res << { key: k, string_value: vv }
122
+ end
123
+ end
124
+ end
125
+ res
126
+ end
101
127
  end
102
128
 
103
129
  class PipelineObjects < PipelineBaseObjects
104
130
  def self.create(api_res)
105
- objs = api_res.map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
131
+ objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
106
132
  base = { id: obj[:id], name: obj[:name] }
107
133
  obj[:fields].sort_by { |f| f[:key] }.inject(base) do |a, e|
108
- a.update(e[:key].to_sym => (e[:string_value] || { ref: e[:ref_value] } ))
134
+ update_hash(a, e[:key].to_sym, e[:string_value] || { ref: e[:ref_value] })
109
135
  end
110
136
  end
111
137
  new(objs)
@@ -113,26 +139,17 @@ module PipeFitter
113
139
 
114
140
  def to_api_opts
115
141
  @objs.map do |obj|
116
- base = { id: obj[:id], name: obj[:name], fields: [] }
117
- obj.each do |k, v|
118
- next if k == :id || k == :name
119
- if v.is_a?(Hash) && v.key?(:ref)
120
- base[:fields] << { key: k, ref_value: v[:ref] }
121
- else
122
- base[:fields] << { key: k, string_value: v }
123
- end
124
- end
125
- base
142
+ { id: obj[:id], name: obj[:name], fields: split_object(obj, %i(id name)) }
126
143
  end
127
144
  end
128
145
  end
129
146
 
130
147
  class ParameterObjects < PipelineBaseObjects
131
148
  def self.create(api_res)
132
- objs = api_res.map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
149
+ objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
133
150
  base = { id: obj[:id] }
134
151
  obj[:attributes].sort_by { |a| a[:key] }.inject(base) do |a, e|
135
- a.update(e[:key].to_sym => e[:string_value])
152
+ update_hash(a, e[:key].to_sym, e[:string_value])
136
153
  end
137
154
  end
138
155
  new(objs)
@@ -140,12 +157,7 @@ module PipeFitter
140
157
 
141
158
  def to_api_opts
142
159
  @objs.map do |obj|
143
- base = { id: obj[:id], attributes: [] }
144
- obj.each do |k, v|
145
- next if k == :id
146
- base[:attributes] << { key: k, string_value: v }
147
- end
148
- base
160
+ { id: obj[:id], attributes: split_object(obj, %i(id)) }
149
161
  end
150
162
  end
151
163
  end
@@ -174,8 +186,8 @@ module PipeFitter
174
186
  name: api_res[:name],
175
187
  description: api_res[:description],
176
188
  }
177
- objs[:tags] = api_res[:tags].map { |e| { e[:key].to_sym => e[:value] } }
178
- api_res[:fields].inject(objs) do |a, e|
189
+ objs[:tags] = (api_res[:tags] || []).map { |e| { e[:key].to_sym => e[:value] } }
190
+ (api_res[:fields] || []).inject(objs) do |a, e|
179
191
  a.update(e[:key].to_sym => (e[:string_value] || { ref: e[:ref_value] } ))
180
192
  end
181
193
  new(objs)
@@ -1,3 +1,3 @@
1
1
  module PipeFitter
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pipe_fitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - masa21kik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-12 00:00:00.000000000 Z
11
+ date: 2016-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk