swift-tools 3.0.1 → 3.1.0

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
  SHA1:
3
- metadata.gz: b52354a80d7ac7852a905b6541417c85f8b1a246
4
- data.tar.gz: 46a3befc26c77cc13a2b3b8ea49cb4e328abe737
3
+ metadata.gz: e7f9e144b048f84e06b725d3a6e60db0da26ad82
4
+ data.tar.gz: d4216fb46541e4915e26063362ad633ce9d99a50
5
5
  SHA512:
6
- metadata.gz: 74674780c301661ba1d7c2ec59db1b50207295ae26ca1d777b799c4a1e6c871ed61577180af00350a85dfb0e0c9b7d402e80f3915114b5804d163cf40db32cb1
7
- data.tar.gz: f5ceddfb1267f8debd7632846422386e8be41530ce73d7d092a2b1db3122cb6a86252640b3ae41fcf3b15b3ceee91854b3e32d796eefe1cd1b8eec0b437f768a
6
+ metadata.gz: c3935cc68966effbe14953e10ac713a9ad40a987807eb065b6748de21477a9f7115310b9e541b1c3438c218daa777e5e5994295e45f6d89e754f9b521a0fa2b4
7
+ data.tar.gz: fa158c838246921bef06caf63f5e1129ef7ba64bc9ec9e5d10e4cbc58472a80f24936c5173c317d9d169c4e919a7651ca112d45e648a3e4b90e79bcfe8ea8cc9
@@ -120,7 +120,7 @@ module SwiftTools
120
120
  interface_data[:properties].each {|prop_name, prop_data|
121
121
  line = INDENT
122
122
  if prop_data[:readonly]
123
- line += "private(set) public "
123
+ line += "private(set) "
124
124
  elsif prop_data[:visibility] == :private
125
125
  line += 'private '
126
126
  end
@@ -166,6 +166,10 @@ module SwiftTools
166
166
  line += 'private '
167
167
  end
168
168
 
169
+ if interface_data[:base]
170
+ line += 'override '
171
+ end
172
+
169
173
  line += "init() {"
170
174
 
171
175
  if init_data[:body].length > 0
@@ -206,6 +210,7 @@ module SwiftTools
206
210
  fix_null(body)
207
211
  fix_at_string(body)
208
212
  fix_broken_else(body)
213
+ fix_alloc_init(body)
209
214
  line += body + INDENT + "}\n"
210
215
  end
211
216
 
@@ -227,19 +232,37 @@ module SwiftTools
227
232
  def capture_imports(h_filename, content)
228
233
  r1 = ''
229
234
  r2 = ''
230
- content.scan(/[@#]import\s*"?[\.a-zA-Z0-9_]+"?\s*;?\s*\n?/m).each {|m|
231
- s = m.strip
235
+ content.to_enum(:scan, /[@#]import *"?([\.a-zA-Z0-9_]+)"? *;? *\n?/m).map { Regexp.last_match }.each {|m|
236
+ s = m[0].strip
232
237
  if s.start_with?("#")
233
238
  if s.index(h_filename).nil?
234
239
  r2 += "// TODO: Add '#{s}' to bridging header\n"
235
240
  end
236
241
  else
237
- r1 += remove_eol_semicolons(s) + "\n"
242
+ r1 += "import #{m[1]}\n"
238
243
  end
239
244
  }
240
245
  {:at_imports => r1, :hash_imports => r2}
241
246
  end
242
247
 
248
+ def capture_statics(content)
249
+ statics = ''
250
+ content.scan(/static *(.*?);/m) {|m|
251
+ decl = m[0]
252
+ decl.gsub!('const', '')
253
+ decl.gsub!('*', '')
254
+ decl.gsub!('@"', '"')
255
+ decl.scan(/([a-zA-Z0-9_\*]+) +([a-zA-Z0-9_\*]+)(?: *= *(.*))?/m) {|mm|
256
+ statics += "// TODO: Add 'static let #{mm[1]}: #{map_type(mm[0])}"
257
+ if mm[2]
258
+ statics += " = #{mm[2]}"
259
+ end
260
+ statics += "' to one of your classes'\n"
261
+ }
262
+ }
263
+ statics
264
+ end
265
+
243
266
  def capture_interfaces(content, in_hdr)
244
267
  interfaces = {}
245
268
  content.scan(/^\s*@interface\s*([a-zA-Z0-9_]+)(?:\s*:\s*([a-zA-Z0-9_]+)\s*)?(?:\s*\(([a-zA-Z0-9_, ]*)\))?(?:\s*<(.+)>)?((?:.|\n)*?)@end *\n$/m).each {|m|
@@ -315,24 +338,6 @@ module SwiftTools
315
338
  implementations
316
339
  end
317
340
 
318
- def capture_statics(content)
319
- statics = ''
320
- content.scan(/static *(.*?);/m) {|m|
321
- decl = m[0]
322
- decl.gsub!('const', '')
323
- decl.gsub!('*', '')
324
- decl.gsub!('@"', '"')
325
- decl.scan(/([a-zA-Z0-9_\*]+) +([a-zA-Z0-9_\*]+)(?: *= *(.*))?/m) {|mm|
326
- statics += "@objc let #{mm[1]}: #{map_type(mm[0])}"
327
- if mm[2]
328
- statics += " = #{mm[2]}"
329
- end
330
- statics += "\n"
331
- }
332
- }
333
- statics
334
- end
335
-
336
341
  def convert_to_dot_syntax(content)
337
342
  # Repeatedly find a [] syntax method call that does not have a nested [] call
338
343
  # and convert it until done.
@@ -360,7 +365,7 @@ module SwiftTools
360
365
  arg = { :name => label_match[1]}
361
366
 
362
367
  if block_match = body.match(/ *(?:\(.*?\))?(?: |\n)\{/, label_match.offset(0)[1])
363
- end_of_param = find_close_char_offset(body, block_match.offset(0)[1], '{', '}')
368
+ end_of_param = find_close_char_offset(body, block_match.offset(0)[1], '{', '}') + 1
364
369
  else
365
370
  # Find the next arg label or the end of the string
366
371
  next_label_match = body.match(param_label_re, label_match.offset(0)[1])
@@ -430,6 +435,15 @@ module SwiftTools
430
435
  '(' + params + ')'
431
436
  end
432
437
 
438
+ def fix_alloc_init(content)
439
+ content.gsub!(/([a-zA-Z0-9_]+)\.alloc\(\)\.init(?:With([a-zA-Z0-9_]+))?\(/) { |m|
440
+ r = "#{$1}("
441
+ if $2
442
+ r += $2[0].downcase + $2[1..-1] + ': '
443
+ end
444
+ }
445
+ end
446
+
433
447
  def fix_if_statements(content)
434
448
  content.gsub!(/if *\((.+?)\)(?: |\n)*{/m) {|m|
435
449
  "if #{$1} {"
@@ -509,6 +523,8 @@ module SwiftTools
509
523
  'Long'
510
524
  when 'void'
511
525
  'Void'
526
+ when 'NSString'
527
+ 'String'
512
528
  when /(.*)\*/
513
529
  $1
514
530
  else
@@ -2,5 +2,5 @@ require 'csharp_2_swift'
2
2
  require 'objc_2_swift'
3
3
 
4
4
  module SwiftTools
5
- VERSION = "3.0.1"
5
+ VERSION = "3.1.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swift-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Lyon-smith