gwtools 0.0.9 → 0.0.11

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: a0d8d1c08e191ea5994386b5ffa6ff37ead560cf421bacf85bc5378cabbff27d
4
- data.tar.gz: 72b8d9b5c16ca85bc8dd2ae93451f03b09aea284fd617554647eb74c9ba52df9
3
+ metadata.gz: e3007bfd409959d80ace62d0c7f4d184fdc87aa5cdf99a0af9131c7178bc054f
4
+ data.tar.gz: f8d8e7aaf6b6883bc4840e55843a80d2642a0760448a9164dcbed5cf08a4b5da
5
5
  SHA512:
6
- metadata.gz: 6a8bfa15a1f9f640e62796a01c1cb0475705a62b4ab5860ed9e6d98fb4c2f9f039f6b84951961b63c3cb155a6cb7333cb295764c4c4270647eeef83a7a91a267
7
- data.tar.gz: b79801bece0b7663e9ff5cc3048147964d89df2a6531473fcf1670a7b4ad300ad9e4aae1ae3a368f852570085056394afaedf5a09d3ca1ce522d92cd9b8a1f58
6
+ metadata.gz: 714fb8b942c4e0c2be8cf56a07dc2850cd9899e9ea57eed850900cb9edfa9ccf008a0bc346afb681a497acf78f79b76d927a61beb4fa45b561475bdcc52a8029
7
+ data.tar.gz: b1b9a19753e711bf0fa15b7168debcbd05158b750a854b55de20ca60cdf5bd7384e71fcdc885cd50a6f5888de18d9f9d818b9141a6a3f8944d3dbad9d60feb11
@@ -116,7 +116,8 @@ public extension <%="#{@api_name}"%> {
116
116
  end
117
117
 
118
118
  def self.getPrefixPath(dir_path)
119
- prefixPaths = %w[app-api/api/v1.0 app-api/api/v2.0]
119
+ prefixPaths = %w[app-api/api/v1.0 app-api/api/v2.0 community-app-api/app-api/api/v1.0 app-api/api/haval/v2.0
120
+ bt-cpsp-api/cpsp-api/v1]
120
121
 
121
122
  prefixPaths.each do |prefix_path|
122
123
  return prefix_path.gsub(/^\/|\/$/, "") if dir_path.start_with?(prefix_path)
@@ -159,7 +160,7 @@ public extension <%="#{@api_name}"%> {
159
160
  app_name = "AppAPI"
160
161
  end
161
162
  if dir == 'restful'
162
- swift_model = generate_model("#{httpMethod.capitalize.chomp}Model", responseJson)
163
+ swift_model = generate_model("#{httpMethod.capitalize.chomp}Model", responseJson, 'data')
163
164
  prefixPath = getPrefixPath(url_path)
164
165
 
165
166
  return unless !prefixPath.empty?
@@ -232,64 +233,69 @@ public extension <%="#{@api_name}"%> {
232
233
  end
233
234
 
234
235
  end
235
-
236
236
  def self.capitalize_first_letter(str)
237
237
  str[0].upcase + str[1..-1]
238
238
  end
239
239
 
240
- def self.generate_model(name, json_data, level = 0)
241
-
242
- if json_data == nil
243
- return ''
240
+ def self.generate_model(name, json_data, root_path = '')
241
+ # 找到真实数据(data)所在位置
242
+ if !root_path.empty?
243
+ json_data = json_data[root_path]
244
+ if json_data.all? { |element| element.is_a?(Hash) }
245
+ json_data = json_data.inject(:merge)
246
+ end
244
247
  end
245
248
 
246
- if level == 0
247
- # 找到 真正要处理的 data 数据
249
+ swift_model = ''
250
+ case json_data
251
+ when String
252
+ return "var #{name}: [String] = []\n"
253
+ when Float
254
+ return "var #{name}: [Float] = []\n"
255
+ when Integer
256
+ return "var #{name}: [Int] = []\n"
257
+ when Array
258
+ return ''
259
+ when Hash
260
+ swift_model += "struct #{name}: HandyJSON {\n"
261
+ # generate_model(name, json_data)
248
262
  json_data.each do |key, value|
249
- if key == 'data'
250
- case value
251
- when Array
252
- json_data = value.first
253
- @json_data_is_arr = true
254
- when Hash
255
- json_data = value
256
- @json_data_is_arr = false
263
+ case value
264
+ when NilClass # nil 对象默认给个Stirng?类型
265
+ swift_model += " var #{key}: String?\n"
266
+ when FalseClass
267
+ swift_model += " var #{key}: Bool = false\n"
268
+ when TrueClass
269
+ swift_model += " var #{key}: Bool = false\n"
270
+ when Float
271
+ swift_model += " var #{key}: Float = 0.0\n"
272
+ when Integer
273
+ swift_model += " var #{key}: Int = 0\n"
274
+ when String
275
+ swift_model += " var #{key}: String?\n"
276
+ when Array
277
+ if value.count > 0
278
+ if value.all? { |element| element.is_a?(Hash) }
279
+ merged_hash = value.inject(:merge)
280
+ swift_model += "var #{key}: [#{capitalize_first_letter(key)}Model]?\n"
281
+ swift_model += generate_model("#{capitalize_first_letter(key)}Model", merged_hash)
282
+ else
283
+ swift_model += generate_model(key, value[0])
284
+ end
285
+ else
286
+ swift_model += "var #{key}: [Any]?\n"
257
287
  end
258
- end
259
- end
260
- end
261
-
262
- swift_model = "struct #{name}: HandyJSON {\n"
263
- json_data.each do |key, value|
264
- case value
265
- when NilClass # nil 对象默认给个Stirng?类型
266
- swift_model += " var #{key}: String?\n"
267
- when FalseClass
268
- swift_model += " var #{key}: Bool = false\n"
269
- when TrueClass
270
- swift_model += " var #{key}: Bool = false\n"
271
- when Float
272
- swift_model += " var #{key}: Float = 0.0\n"
273
- when Integer
274
- swift_model += " var #{key}: Int = 0\n"
275
- when String
276
- swift_model += " var #{key}: String?\n"
277
- when Array
278
-
279
- if !value.empty?
280
- swift_model += " var #{key}: [#{capitalize_first_letter(key)}] = []\n"
281
- swift_model += generate_model("#{capitalize_first_letter(key)}", value.first, level+1)
288
+ when Hash
289
+ swift_model += "var #{key}: #{capitalize_first_letter(key)}Model?\n"
290
+ swift_model += generate_model("#{capitalize_first_letter(key)}Model", value)
282
291
  else
283
- swift_model += " var #{key}: [Any] = []\n"
292
+ swift_model += "var #{key}: #{value.class}?\n"
284
293
  end
285
- when Hash
286
- swift_model += " var #{key}: #{capitalize_first_letter(key)}?\n"
287
- swift_model += generate_model("#{capitalize_first_letter(key)}", value, level+1)
288
- else
289
- swift_model += " var #{key}: #{value.class == String ? 'String' : 'Int'}\n"
290
294
  end
295
+ swift_model + "public init() {}\n}\n"
296
+ else
297
+ return swift_model
291
298
  end
292
- swift_model + "public init() {}\n}\n"
293
299
  end
294
300
 
295
301
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gwtools
4
- VERSION = "0.0.9"
4
+ VERSION = "0.0.11"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gwtools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - chenglq