gwtools 0.0.9 → 0.0.10

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